Получить потерянную ветвь HEAD в git

У меня действительно простой проект Git, с только ветвью мастера и без происхождений.

Где-то вдоль линии я случайно создал отдельный проект HEAD в моем проекте, а затем, после создания кучи коммитов на этом отсоединенном HEAD, попытался объединить его обратно в мою ветвь Master. Я делал это в SourceTree, и сначала слияние, казалось, сработало (график показал, что хозяин входит в голову, и были конфликты слияния, которые я исправил), но затем я дважды щелкнул по Master, чтобы переключиться на эту ветку, а затем вдруг мой HEAD исчез. Я не могу найти его нигде в SourceTree под всеми ветвями, а git branch и git log в командной строке отображает только мою ветвь Master.

В любом случае, чтобы вернуть мои фиксации из моего потерянного отсоединенного HEAD?

Ответы

Ответ 1

Я не могу найти его нигде в SourceTree

Вернитесь к интерфейсу командной строки и выполните git reflog.
Вы должны быть в состоянии найти SHA1 вашей HEAD в этом журнале.

Обратите внимание, что вам не нужно было бы "объединять" свою ветвь отведенного HEAD назад к мастеру.

У вас просто может быть reset master для текущей фиксации HEAD.
См. "Как исправить Git отдельную голову?"

git checkout master

В чистом методе SourceTree (как в этом потоке)

http://edwon.tv/wordpress/wp-content/uploads/2012/09/Screen-Shot-2012-10-15-at-4.15.22-PM.png

Вы также можете проверить существующую ветку, а затем щелкнуть правой кнопкой мыши по последней фиксации и выбрать Reset <branch> для этой фиксации, чтобы переместить указатель ветвления туда, где вы хотите.

Когда отображается HEAD, это означает, что вы находитесь на отдельной головке, а это означает, что у вас нет выписки из ветки, и любые фиксации не будут перемещать ветки, когда они сделаны. Если вы проверите отдельную HEAD в SourceTree, она будет предупреждать вас довольно очевидно, так что, возможно, это было сделано в командной строке заранее, и вы увидели эффекты after в SourceTree.

Альтернатива:

создать ветку из ветки "HEAD" (которая вообще не является веткой) с помощью новой команды ветвления. В этот момент голова ушла.
Затем мне удалось объединить эту ветку с мастером и удалить нежелательную ветвь, которую я создал из HEAD.

Ответ 2

Вот что сработало для меня:
1) Используйте команду "git reflog", чтобы узнать версию главы, которая исчезла.
2) Используйте "git checkout @{- 1}, чтобы переместить HEAD обратно в ту, которая исчезла). Число" -X "- это количество фиксации исчезнувшего из текущей главы." -1 "означает, что исчезнувшая версия равна" 1 ", уйти от текущей главы.
3) Создайте ветвь для сохранения исчезнувшей версии