Как пометить старый коммит в Git?

Я обнаружил, что никто из них, похоже, не работал должным образом для меня. Невозможно искупить это до смерти, но по какой-то причине не смогли заставить другие опции работать правильно.

Ожидаемый результат был репо «клонирован» на другой пульт (т. Е. От Github к другому провайдеру):

  • Все ветви создаются на новом удаленном
  • Вся история ветвей создается на новом удаленном компьютере (это было пропущено на каждом решении, которое я пробовал)
  • Все теги создаются на новом удаленном
  • Источник перемещается (задан)
  • Неразрушающий (дает паузу опции -mirror)

Главной проблемой, которую я наблюдал, было то, что либо все удаленные филиалы не воссоздавались на новом пульте дистанционного управления. Если команда была выполнена, новый пульт не имел истории ветвей (т. Е. Выполнение 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
828
задан Stevoisiak 20 April 2017 в 02:54
поделиться