Если вы захотите оформить ветку:
git checkout 760ac7e
Например b9ac70b, как можно вернуться к последней известной голове, b9ac70bне зная ее SHA1?
Если вы захотите оформить ветку:
git checkout 760ac7e
Например b9ac70b, как можно вернуться к последней известной голове, b9ac70bне зная ее SHA1?
Ответы:
Если вы помните, какая ветвь была проверена ранее (например master), вы можете просто
git checkout master
выйти из отсоединенного состояния ГОЛОВА .
Вообще говоря: git checkout <branchname>вытащить вас из этого.
Если вы не помните последнее название ветви, попробуйте
git checkout -
Это также пытается проверить вашу последнюю проверенную ветку.
git checkout -b new_branch_name, вы потеряете коммиты, сделанные в состоянии отключенного HEAD?
git gcони запускаются, они удаляются навсегда. Вы можете смотреть их git reflogдо тех пор, пока они все еще там.
У меня был такой крайний случай, когда я проверил предыдущую версию кода, в которой структура моего файлового каталога была другой:
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'.
Возможно, вы сделали несколько новых коммитов в detached HEADштате. Я считаю, что если вы делаете, как другие ответы, советуйте:
git checkout master
# or
git checkout -
тогда вы можете потерять свои коммиты !! Вместо этого вы можете сделать это:
# you are currently in detached HEAD state
git checkout -b commits-from-detached-head
а затем слиться commits-from-detached-headв любую ветку, которую вы хотите, чтобы вы не потеряли коммиты.
git checkout -- убийственная особенность!