Desfazer Commit no Git

Abdul Jabbar 30 janeiro 2023
  1. Desfazer o commit no Git - Hard Reset
  2. Desfazer Commit no Git - Redefinir Git
  3. Desfazer Commit no Git - Soft Reset Git
  4. Desfazer Commit no Git - Recuperar Arquivos Hard Reset
Desfazer Commit no Git

Este artigo está prestes a nos guiar sobre como recuperar o que não pretendemos fazer enquanto usamos o Git commit. O Git não é tão complicado a ponto de precisarmos de um grande processo para resolver nosso problema específico, mas é mais do que o problema que é causado é tão grande que técnicas diferentes são necessárias, dependendo do que temos, o problema e o que queremos resultado.

Existem muitos aspectos do Git que são fáceis de entender, mas voltar para onde estávamos antes é muito mais fácil e apreciável; é mais fácil desfazer mudanças importantes em um repositório. É um momento um pouco assustador quando não sabemos como isso é executado por meio de comandos. Mas, na verdade, é surpreendentemente fácil fazer pequenas coisas como confirmar ou desfazer os commits.

Mas o que você faria neste caso para desfazer seu indesejado commit e então commitar suas novas mudanças.

Digamos que se você fez algumas alterações e depois as comprometeu, para esse propósito, existem quatro métodos para fazer isso:

Desfazer o commit no Git - Hard Reset

Se você tiver, onde 40 é o seu HEAD e (42) é o estado dos nossos arquivos.

   (42)
38-39-40
  Head

E você deseja desfazer o commit 40 e nunca mais querer vê-lo novamente e apagar todas as mudanças nos arquivos modificados localmente.

Usaremos o seguinte comando:

git reset --hard HEAD ~ 1

Resultado:

 (42)
38-39
 Head

Agora 39 é o HEAD. Como no exemplo acima, usamos --hard, agora seus arquivos são redefinidos para seu estado no início do commit, que é o 39º commit.

Desfazer Commit no Git - Redefinir Git

Vamos supor que o último commit 40 não foi grande coisa, mas apenas um pouco errado. Agora queremos desfazer o commit, mas manter nossas alterações. Começando novamente a partir daqui, com 40 como nosso HEAD:

   (42)
38-39-40
  Head

Em vez de usar o parâmetro --hard, usaremos o seguinte comando:

git reset HEAD ~ 1

Resultado:

   (42)
38-39-40
Head

Como vimos em ambos os casos, HEAD apenas define o último commit. Quando fazemos um git reset HEAD~1, o comando Git move o ponteiro HEAD de volta para um commit. Mas (a menos que você use --hard), deixamos nossos arquivos como estavam antes. Não perdemos nada nele.

Desfazer Commit no Git - Soft Reset Git

Em uma nota mais leve, você pode até mesmo desfazer nosso commit, mas deixar nossos arquivos e nosso índice usando o seguinte:

git reset --soft HEAD ~ 1

Isso não apenas deixará nossos arquivos lá; até deixa nosso índice lá sozinho. Quando fazemos git status, veremos que os mesmos arquivos estão no índice como antes. Na verdade, veremos após este comando, poderíamos fazer git commit e estaríamos fazendo novamente o commit anterior que acabamos de fazer.

Desfazer Commit no Git - Recuperar Arquivos Hard Reset

Suponha que desfizemos um commit como no exemplo da primeira opção, mas percebamos que precisamos dele posteriormente. Agora, o que fazer?

Não se preocupe e ainda há uma maneira de recuperá-lo. Usaremos o comando git reflog e veremos uma lista de commits (não finalizados) que movemos. Encontre o commit que destruímos e faça o seguinte:

git checkout -b BranchName CommitYouDestroyed

Agora restauramos esse commit. No Git, os commits não excluem por 90 dias a partir do dia em que foram excluídos, então podemos facilmente restaurá-lo como um backup novamente nos repositórios.

Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn