Я обнаружил, что никто из них, похоже, не работал должным образом для меня. Невозможно искупить это до смерти, но по какой-то причине не смогли заставить другие опции работать правильно.
Ожидаемый результат был репо «клонирован» на другой пульт (т. Е. От Github к другому провайдеру):
Главной проблемой, которую я наблюдал, было то, что либо все удаленные филиалы не воссоздавались на новом пульте дистанционного управления. Если команда была выполнена, новый пульт не имел истории ветвей (т. Е. Выполнение git checkout branch; git log
не показало ожидаемых ответных коммитов).
Я заметил, что git checkout -b branchname
НЕ совпадает с git checkout branchname
(последний был тем, что мне нужно). Я заметил, что git checkout --track branchname
, похоже, не тянет историю ветвей.
Мое решение (на основе powershell):
Function Git-FetchRemoteBranches {
$originalbranch = (git symbolic-ref HEAD).split("/")[-1]
Foreach ($entry in (git branch -r)) {
If ($entry -like "*->*") {
$branch = $entry.split("->")[2].split("/")[1]
}
else {$branch = $entry.split("/")[1]}
Write-Host "--Trying git checkout " -NoNewline
Write-Host "$branch" -Foreground Yellow
git checkout $branch
Remove-Variable branch -Force
""}
#Switch back to original branch, if needed
If ( ((git symbolic-ref HEAD).split("/")[-1]) -ne $originalbranch) {
"Switching back to original branch"
git checkout $originalbranch
Remove-Variable originalbranch -Force
}
}
git clone http://remoterepo
cd remoterepo
Git-FetchRemoteBranches
git remote add newremote
git push newremote --all
git push newremote --tags #Not sure if neeeded, but added for good measure