Git/снятый HEAD, верните работу?
Я сделал десятки коммитов по тому, что, как я думал, был моей веткой, затем проверил другую ветку.
Желая вернуться к моей начальной ветке, я не нашел обновленный код. Посмотрев на мою историю на консоли, я понял, что работал в отдельной ветке...
Как можно получить работу, которую я сделал на отдельной ветке?
Ответы
Ответ 1
Да. Вы можете использовать reflog. Попробуйте git log -g HEAD
. Это покажет вам reflog для HEAD
, т.е. Каждое отдельное сообщение, на которое указывает HEAD
, и причина, по которой он был изменен на этот коммит. Вы должны найти свою команду, которая проверила ветку, и посмотреть, что было в предыдущей фиксации.
Вы также можете использовать другой синтаксис для индексации в рефлоге. Если вы только что выполнили git checkout branch
, то [email protected]{1}
будет ссылаться на предыдущую фиксацию фиксации (так что вы можете git checkout [email protected]{1}
вернуться к ней). Или, если вы знаете, что 10 минут назад HEAD
указывал на правильную вещь, вы можете использовать git checkout [email protected]{10.minutes.ago}
.
Ответ 2
Отдохните, все еще есть:)
Просто позвоните
git reflog
и git
расскажут вам, что совершает HEAD
, указанный ранее. Будет строка типа
checkout: moving from c70e36e25ac2dbedde6cb376719381fe0ab53f19 to master
сообщит вам SHA1 о кончине ваших коммитов с отсоединенной головкой. Создайте новую ветвь, указывающую на этот кончик, используя
git branch saved-commits c70e36e25ac2dbedde6cb376719381fe0ab53f19
Теперь вы можете переделать эту ветку поверх ветки, на которую должны были идти фиксации.