Passo a passo: Como desfazer o último commit no Git

No Git, é possível desfazer o último commit usando os comandos reset ou revert, dependendo da necessidade.

Como desfazer o último commit no Git?

Cometer um erro no Git é comum, mas felizmente há maneiras seguras de desfazer o último commit sem perder as alterações feitas no código. Existem três principais abordagens para desfazer um commit: reset soft, reset hard e revert.

1. Desfazendo o commit sem perder as alterações (reset --soft)

Se deseja apenas remover o commit, mas manter os arquivos no stage (prontos para um novo commit), utilize:

git reset --soft HEAD~1

Isso faz com que o último commit desapareça do histórico, mas os arquivos continuam prontos para serem commitados novamente.

2. Desfazendo o commit e removendo arquivos do stage (reset --mixed)

Se além de remover o commit, você quiser tirar os arquivos do stage para editá-los novamente antes de um novo commit, use:

git reset --mixed HEAD~1

Isso deixa os arquivos modificados, mas não adicionados ao stage.

3. Desfazendo o commit e removendo completamente as alterações (reset --hard)

Caso queira descartar completamente as mudanças do último commit, utilize:

git reset --hard HEAD~1

⚠️ Atenção: Esse comando remove as alterações do commit e do working directory, tornando-as irrecuperáveis, a menos que tenham sido armazenadas em outro lugar.

4. Criando um commit que desfaz o último commit (git revert)

Se o commit já foi enviado para um repositório remoto e deseja desfazê-lo sem perder o histórico, use:

git revert HEAD

Isso cria um novo commit que desfaz as mudanças do commit anterior, preservando o histórico de commits no repositório.

Entender como desfazer um commit corretamente é essencial para qualquer desenvolvedor que usa Git. Dependendo do cenário, podemos simplesmente remover o commit e manter os arquivos (reset --soft), voltar ao estado anterior sem perder o código (reset --mixed) ou até mesmo apagar tudo (reset --hard).

A escolha da abordagem correta evita perda de trabalho e garante um histórico limpo e bem estruturado. Se um commit já foi enviado para o repositório remoto, o uso do git revert é o mais recomendado, pois mantém a rastreabilidade do código sem comprometer o histórico. Por isso, conhecer bem essas opções pode ajudar a evitar problemas e recuperar alterações feitas por engano.

Algumas aplicações:

  • Corrigir erros em commits antes de enviá-los para o repositório remoto
  • Remover commits indesejados sem perder alterações no código
  • Manter um histórico limpo e bem organizado
  • Reverter alterações em código compartilhado sem afetar o trabalho de outros desenvolvedores
  • Evitar perda de código por erro ao commitar mudanças incorretas

Dicas para quem está começando

  • Antes de usar 'git reset --hard', tenha certeza de que não perderá alterações importantes.
  • Use 'git log --oneline' para visualizar os commits antes de desfazer algo.
  • Se já enviou um commit para o repositório remoto, prefira 'git revert' em vez de 'git reset'.
  • Se quiser apenas modificar a mensagem do último commit, use 'git commit --amend'.
  • Crie um backup do código antes de executar comandos destrutivos como 'git reset --hard'.

Contribuições de Ricardo Moura

Compartilhe este tutorial: Como desfazer o último commit no Git

Compartilhe este tutorial

Continue aprendendo:

Como escrever boas mensagens de commit no Git

Escrever boas mensagens de commit no Git é essencial para manter um histórico organizado e facilitar a colaboração entre desenvolvedores.

Tutorial anterior

Como descartar mudanças em arquivos não commitados

O Git permite descartar mudanças em arquivos não commitados usando diferentes comandos, dependendo da necessidade.

Próximo tutorial