Sobre o check-out de um commit
O check-out de um commit permite exibir seu repositório em um estado anterior sem precisar criar um novo branch ou modificar um branch existente. Isso pode ser útil durante a depuração, pois permite que você veja se existe algum um bug em seu repositório em um commit anterior.
O check-out de um commit coloca seu repositório em um estado "HEAD desanexado". Na terminologia Git, "HEAD" é a referência que aponta para a dica, ou commit mais recente, de um branch nomeado em seu repositório. Um estado "HEAD desanexado" significa que HEAD se refere a um commit específico, mas não a um branch nomeado em seu repositório.
Note
Commits feitos em um estado "HEAD desanexado" serão perdidos ao alternar branches, pois eles não foram feitos em um branch nomeado. Se precisar recuperar os commits perdidos, confira Solução de problemas.
Fazer check-out de um commit
-
Na barra lateral esquerda, clique em Histórico.
-
Clique com o botão direito do mouse no commit de que você gostaria de fazer check-out e selecione Fazer checkout do commit.
-
O item Branch Atual, na barra do repositório, agora mostrará "HEAD desanexado", junto com o SHA do commit do qual foi feito check-out.
-
Para sair do estado "HEAD desanexado", você precisará alternar branches. Para saber mais, confira Gerenciar branches no GitHub Desktop.
Solução de problemas
Você pode recuperar os commits que foram feitos em um estado "HEAD desanexado" usando o comando git reflog
da linha de comando do Git. Você pode abrir seu repositório na linha de comando de GitHub Desktop acessando a barra de menus, selecionando Repositório e clicando em Abrir na linha de comando.
O comando git reflog
exibirá a saída dos eventos que aconteceram em seu repositório, incluindo commits. Veja a seguir uma saída de amostra comando git reflog
:
81fa9136f8 (HEAD -> main) HEAD@{0}: checkout: moving from 8bd5e736a27a52a7e36a856b30e6f0582d341aa1 to main
8bd5e736a2 HEAD@{1}: commit: testing out a feature
22fa76c125 HEAD@{2}: checkout: moving from main to 22fa76c1250a2847305b9325752d941dbaa55983
A linha 8bd5e736a2 HEAD@{1}: commit: testing out a feature
é o commit que queremos recuperar, já que foi feito enquanto o repositório estava em um estado "HEAD desanexado". Para recuperá-lo, você pode executar git cherry-pick 8bd5e736a2
para aplicar o commit ao branch atual em seu repositório.
Leitura adicional
- HEAD desanexado na documentação do Git
- Git cherry-pick na documentação do Git