Подтвердить что ты не робот

Git: Как вернуться из состояния "отсоединенный HEAD"

Если вы проверите ветку:

git checkout 760ac7e

например. b9ac70b, как можно вернуться к последней известной голове b9ac70b, не зная ее SHA1?

4b9b3361

Ответ 1

Если вы помните, какая ветка была проверена раньше (например, master), вы могли бы просто

git checkout master

чтобы выйти из состояния автономного состояния HEAD.

Вообще говоря: git checkout <branchname> избавит вас от этого.

Если вы не помните имя последней ветки, попробуйте

git checkout -

Это также пытается проверить вашу последнюю удаленную ветку.

Ответ 2

Используйте git reflog, чтобы найти хэши ранее зафиксированных коммитов.

Команда быстрого доступа, чтобы перейти к вашей последней проверенной ветке (не уверен, что эта работа правильна с отсоединенным HEAD и промежуточным фиксатором, хотя) составляет git checkout -

Ответ 3

У меня был этот случай с краем, где я проверил предыдущую версию кода, в котором была изменена структура моего каталога:

git checkout 1.87.1                                    
warning: unable to unlink web/sites/default/default.settings.php: Permission denied
... other warnings ...
Note: checking out '1.87.1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. 
Example:

  git checkout -b <new-branch-name>

HEAD is now at 50a7153d7... Merge branch 'hotfix/1.87.1'

В таком случае вам может понадобиться использовать --force (когда вы знаете, что возврат к исходной ветке и отмена изменений - это безопасная вещь).

git checkout master не работал:

$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
web/sites/default/default.settings.php
... other files ...

git checkout master --force (или git checkout master -f) работал:

git checkout master -f
Previous HEAD position was 50a7153d7... Merge branch 'hotfix/1.87.1'
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.