В настоящее время нет ни в одной ветке + git commit + checkout, когда нет ни в одной ветке. Я потерял свои изменения? - PullRequest
35 голосов
/ 18 мая 2011

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

Как я могу получить свои изменения? Я не могу объединить или оформить заказ, так как нет ветви для объединения.

Ответы [ 6 ]

68 голосов
/ 18 мая 2011

Вы можете использовать git reflog, чтобы получить хеш коммита коммита, который вы сделали, находясь в "без ветки" (отсоединенный HEAD), и объединить его с веткой, в которой вы находитесь (возможно, master)

Что-то вроде git merge HEAD@{1}

Вы также можете git rebase -i и "выбрать" коммит, который вы хотите, из reflog.

11 голосов
/ 06 октября 2011

Я был в похожем состоянии после совершения некоторой работы:

Лилит: менеджер KelSolaar $ git status

В настоящее время нет ни одной ветки.

Я выпустил git log , чтобы посмотреть мой последний хеш коммита:

Лилит: менеджер KelSolaar $ git log

commit 49984303037e970d637161c3154b7fd7d6ae3a43 Автор: КелСолаар Дата: ср 5 октября 22:41:31 2011 + 0100

Introduce new "QObject" components category and rename existing ones to "Def

Затем я проверил свою основную ветку:

Лилит: Менеджер KelSolaar $ git master checkout

Предыдущая позиция HEAD была 4998430 ... Ввести новые категории компонентов QObject и переименовать существующие в «По умолчанию» и «QWidget».

Переключено на ветку 'master'

И я наконец-то объединился, используя хеш коммита:

Лилит: Менеджер KelSolaar $ git merge 49984303037e970d637161

Обновление 141bc69..4998430

Перемотка вперед

src / manager / component.py | 2 + -

...

9 голосов
/ 21 февраля 2013

git checkout - переключит вас обратно на предыдущую ветку:

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $ git checkout master

Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  08f84f4 Fix everything

Switched to branch 'master'

Thu Feb 21 12:50 AM /src/test (master) $ git checkout -

HEAD is now at 08f84f4... Fix everything

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $
2 голосов
/ 18 мая 2011

Ваш коммит не ушел, вы можете восстановить его, попросив git показать вам скрытые коммиты и поместить их обратно во временную ветку.

1 голос
/ 19 мая 2011

Используйте "git reflog", он показывает хэши фиксации результатов вашей истории команд git. Затем вы можете «git co hash», и когда вы найдете правильный, установите / создайте ветку для него.

0 голосов
/ 18 мая 2011

Ты никогда не "ни на одной ветке".Возможно, вы были в ветке с именем master, но вы были в ветке, когда вы зафиксировали.Так что этот коммит ГДЕ-ТО.

Используйте git log для просмотра истории.Вы можете использовать git reset для возврата во времени (включая, при необходимости, оставив изменения в вашем рабочем каталоге).

...