Se alguém compraria uma filial:
git checkout 760ac7e
por exemplo b9ac70b, como se pode voltar à última cabeça conhecida b9ac70bsem conhecer seu SHA1?
Se alguém compraria uma filial:
git checkout 760ac7e
por exemplo b9ac70b, como se pode voltar à última cabeça conhecida b9ac70bsem conhecer seu SHA1?
Respostas:
Se você se lembrar de qual ramo foi retirado antes (por exemplo master), você pode simplesmente
git checkout master
para sair do estado HEAD desanexado .
De um modo geral: git checkout <branchname>você ficará fora disso.
Se você não se lembra do último nome do ramo, tente
git checkout -
Isso também tenta verificar sua última ramificação com check-out.
git checkout -b new_branch_nameisso, perde os commits feitos enquanto no estado HEAD desanexado?
git gcsão executados, eles são removidos para sempre. Você pode assisti-los git reflogenquanto eles ainda estiverem lá.
Eu tive esse caso extremo, em que verifiquei uma versão anterior do código na qual minha estrutura de diretório de arquivos era diferente:
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'
Em um caso como esse, pode ser necessário usar --force (quando você sabe que voltar ao ramo original e descartar mudanças é uma coisa segura a se fazer).
git checkout master não funcionou:
$ 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(ou git checkout master -f) trabalhou:
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'.
Você pode ter feito alguns novos commit no detached HEADestado. Eu acredito que se você fizer como outras respostas aconselhar:
git checkout master
# or
git checkout -
então você pode perder seus commits !! Em vez disso, você pode fazer o seguinte:
# you are currently in detached HEAD state
git checkout -b commits-from-detached-head
e, em seguida, junte commits-from-detached-head- se ao ramo que desejar, para não perder os commits.
git checkout -- recurso matador!