Git / detached HEAD, получить работу обратно? - PullRequest
20 голосов
/ 17 февраля 2012

Я сделал десятки коммитов на том, что я считал своей веткой, затем проверил другую ветку.

Желая вернуться к своей начальной ветке, я не нашел свой обновленный код.Посмотрев мою историю в консоли, я понял, что работал в отдельной ветке ...

Возможно ли как-то получить работу, которую я проделал в отдельной ветке?

Ответы [ 2 ]

26 голосов
/ 17 февраля 2012

Да. Вы можете использовать reflog. Попробуйте git log -g HEAD. Это покажет вам reflog для HEAD, то есть каждый отдельный коммит, на который указывал HEAD, и причину, по которой он был изменен на этот коммит. Вы должны быть в состоянии найти вашу команду, которая проверила ветку, и посмотреть, что было с предыдущим коммитом.

Вы также можете использовать другой синтаксис для индексации в reflog. Если вы только что выполнили git checkout branch, то HEAD@{1} будет ссылаться на предыдущий извлеченный коммит (поэтому вы можете git checkout HEAD@{1}, чтобы вернуться к нему). Или, если вы знаете, что 10 минут назад HEAD указывал на нужную вещь, вы можете использовать git checkout HEAD@{10.minutes.ago}.

10 голосов
/ 17 февраля 2012

Расслабься, все еще там :)

Просто позвоните

git reflog

и git скажут вам, что фиксирует HEAD, указанный ранее. Там будет строка, как

checkout: moving from c70e36e25ac2dbedde6cb376719381fe0ab53f19 to master

говорит вам SHA1 кончика ваших коммитов с оторванной головой. Создайте новую ветку, указывающую на этот совет, используя

git branch saved-commits c70e36e25ac2dbedde6cb376719381fe0ab53f19

Теперь вы можете перебазировать эту ветку поверх ветки, в которую должны были перейти коммиты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...