В дополнение к @ThiefMaster:
Мне нравится
git clone --mirror
или
git push --mirror
для обновления всех (локальных и удаленных) ссылок и тегов веток
Дополнительная информация Как уже отмечалось, --mirror действительно будет реплицировать репо как есть, что приведет к перезаписи изменений в месте назначения.Ветви, которые не существуют в источнике, будут безоговорочно сокращены.
По сути, это похоже на работу с удаленным компьютером и выполнение 'git remote update --prune', с той разницей, что затронутые ветви могут быть локальными ветвями.а также «удаленные» ссылки [1]
@ LeSpocky (и другие?)
Теперь, если изменения исчезнут, они никогда не вызовут проблем слияния, так что это легко,
--mirror
назван в честь реальной концепции, поэтому он был разработан для преодоления любых различий в цели.Если цель не пустая, и у вас были зафиксированы локальные изменения, вы всегда можете получить их обратно через reflog локальной ветви цели (git log -g
, git reflog
).
В качестве общей меры безопасности вы можете иметь хук для "git stash save" в цели .
Имейте в виду, что --mirror был разработан дляХорошо, mirror , и этот вопрос был на самом деле о том, как реплицировать все ветви на чистый пульт.:)
[1] (ссылки есть, но удаленные определения не копируются; если вы хотите, сделайте ручное копирование из .git / config в .git / config в месте назначения push))