Вы были в такой ситуации:
- x - A - B - C (origin/master)
\
D - E - F (master)
Вы хотели сделать одну из двух вещей, обе из которых описаны в документации, которую Git предложил вам прочитать:
Потяните, затем нажмите, давая вам это:
- x - A - B - C
\ \
D - E - F - M (master, origin/master)
Силовой толчок (git push --force
), давая вам это:
- x - D - E - F (master, origin/master)
Вместо этого, с git push --mirror
вы в основном сделали то же самое, что принудительно толкнули все, превратив удаленный репозиторий в зеркало вашего локального.Это означает, как и сообщалось, удаление с пульта всего, что не было в вашем хранилище.
Редактировать: ответ sehe описывает, как восстановить.Если у вас есть run git remote update
, который удалил бы удаленные ветви, которые он использует для восстановления, тогда может быть полезно следующее.В противном случае все готово.
Лучше всего найти кого-то, кто клонировал из удаленного хранилища (или, если вам повезет, отдельный клон, который вы сделали), скажите им не извлекать / извлекать / удаленное обновление и следовать инструкциям Sehe из этого репозитория.
В противном случае восстановление будет действительно сложным.Если вы недавно взаимодействовали с какой-либо из удаленных веток, возможно, в журнале HEAD
будут следы:
git reflog show
В противном случае, если удаленные ссылки относятся к коммитам, которые являются предками любогоОстальные ветви, вы можете быстро их воссоздать.Если они ссылаются на вещи, которые не являются предками оставшихся ветвей, вы можете найти висячие коммиты:
git fsck
и, возможно, выяснить, на какие из них были направлены ветки.