[Tutorial Git] git checkout: Navegando entre ramos e snapshots, e descartando modificações

ダニエリ - Jun 1 '20 - - Dev Community

Mudando de branch (ramo)

Para mudar de um determinado ramo, digite:

$ git checkout <nome_do_ramo>
Enter fullscreen mode Exit fullscreen mode
  • $ indica que você deve usar o usuário comum para fazer essa operação.
  • escolha o nome do ramo que você deseja, sem os sinais < e >.

Ao voltar para um determinado branch, o ponteiro head estará no último commit feito nesse ramo.

O HEAD é um ponteiro no branch que normalmente aponta para o último commit feito.

Navegando entre snapshots dos commits

Às vezes é necessário verificar com detalhes quais modificações foram feitas no seu código/projeto. Então para navegar entre os snapshots fazemos:

$ git checkout <chave_do_commit>
Enter fullscreen mode Exit fullscreen mode

O que esse comando faz é apontar o HEAD para um determinado commit

Para voltar um commit anterior, digite:

$ git checkout HEAD~1
Enter fullscreen mode Exit fullscreen mode
  • HEAD~1 desloca o ponteiro HEAD para o commit anterior ao atual.

Aqui é importante notar que será criado um branch temporário.

Você pode confirmar isso através do comando

$ git branch
Enter fullscreen mode Exit fullscreen mode

Exemplo:

branch temporária

Nesse ponto, você estará visualizando as alterações que foram feitas até esse commit.

Após a visualização de todo o conteúdo do(s) arquivo(s), você pode voltar ao ramo principal com o comando:

$ git checkout <nome_do_seu_branch_principal>
Enter fullscreen mode Exit fullscreen mode

Exemplo:

voltando ao ramo master

Aqui podemos ver uma mensagem onde é mostrado em que posição o ponteiro HEAD estava, ou seja, de onde viemos.

Exemplo de uso do checkout:

Temos no nosso ramo master os seguintes arquivos

listando arquivos no ramo master

E queremos verificar o projeto no ponto indicado pela imagem abaixo

git log

Sendo assim, fazemos

usando o checkout para ver um determinado commit

Verificando novamente os arquivos do projeto, temos

listando os arquivo novamente

Podemos perceber que temos alguns arquivos a mais que não tínhamos quando o ponteiro HEAD estava no último commit.

Aqui podemos ver todo o projeto como ele estava num commit passado. E então retornamos ao ramos principal.

Fazendo alterações

Caso seja necessário alterações no projeto em um snapshot passado, basta fazer um commit após essas alterações.

Para não perder as informações é necessário criar um novo branch, dessa maneira:

$ git branch <nome_do_novo_ramo> <chave_do_útimo_commit>
Enter fullscreen mode Exit fullscreen mode

Em seguida basta ir até o novo branch criado com o comando

$ git checkout <nome_do_novo_ramo>
Enter fullscreen mode Exit fullscreen mode

E, caso seja preciso, fazer o merge com o branch principal.

Exemplo:

Pegando o mesmo exemplo anterior, fiz um commit após algumas alterações.

commit no branch temporário

Observe que após o commit houve uma mudança na chave

estado do git após o commit

Como podemos perceber, essa é a chave do commit feito há pouco

git log

Para que esse commit não seja perdido, temos que criar um novo branch com essa chave nova, assim

branch nova e chave nova

Aqui, podemos confirmar que o novo branch foi criado

git branch

Agora só precisamos voltar ao ramo principal

voltando ao ramo principal

O que aconteceu aqui, no fluxo do Git, é algo semelhante ao mostrado na imagem abaixo.

fluxo do git

Observação:

  • Recomenda-se usar o checkout para visualizar as snapshots dos commits apenas quando o Working directory estiver limpo, para evitar conflitos.

working directory limpo

Descartando modificações

O checkout também pode ser usado para descartar as modificações feitas em um arquivo, assim

$ git checkout <nome_do_arquivo>
Enter fullscreen mode Exit fullscreen mode

Exemplo:

Temos dois arquivos que foram modificados e queremos descartar as modificações (voltando ao arquivo anterior as mudanças).

dois arquivos modificados

Usando com comando git checkout com os dois arquivos ao mesmo tempo:

usando o checkout para descartar alterações

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .