Git: desfazer o último commit
Última atualização
Para desfazer o commit mais recente, decida o que deve acontecer com as alterações dele. Mantenha-as no stage com git reset --soft HEAD~1, mantenha-as fora do stage com um simples git reset HEAD~1 ou descarte-as com git reset --hard HEAD~1. Se o commit estiver apenas um pouco errado, git commit --amend o corrige no lugar. Se ele já foi enviado com push, use git revert em vez de reescrever o histórico. Para desfazer um commit mais antigo ou vários de uma vez, veja a página git desfazer commit.
Experimente isso no terminal playground: um shell real no seu navegador, nada para instalar.
Escolha o que fazer com as alterações
| Goal | Command |
|---|---|
| Desfazer o commit, manter as alterações no stage | git reset --soft HEAD~1 |
| Desfazer o commit, manter as alterações fora do stage | git reset HEAD~1 |
| Desfazer o commit, descartar as alterações | git reset --hard HEAD~1 |
| Corrigir o último commit (mensagem ou arquivos) | git commit --amend |
| Desfazer um commit que você já enviou com push | git revert HEAD |
Exemplo prático
Desfaça o último commit e refaça-o com uma mensagem melhor.
| Step | Command | Result |
|---|---|---|
| 1 | git reset --soft HEAD~1 | Commit removido, as alterações permanecem no stage |
| 2 | git commit -m "clearer message" | Refaz o commit com as mesmas alterações |
Perguntas frequentes sobre desfazer o último commit no Git
Como desfaço o último commit mas mantenho as alterações?
git reset --soft HEAD~1. Isso remove o último commit mas deixa suas alterações no stage, então você pode refazer o commit imediatamente. Para que as alterações fiquem fora do stage na sua árvore de trabalho, use git reset HEAD~1 (o modo padrão).Como desfaço o último commit e apago as alterações?
git reset --hard HEAD~1. Isso remove o commit e descarta suas alterações da sua árvore de trabalho. É destrutivo: se você pode precisar do trabalho, use --soft no lugar ou recupere depois com git reflog.E se eu só precisar corrigir a mensagem do commit?
git commit --amend. Ele reabre o último commit para que você possa editar a mensagem dele (e refazer o stage dos arquivos se necessário) sem criar um commit separado. Evite emendar um commit que você já enviou com push, pois isso reescreve o histórico.Como desfaço o último commit depois de fazer o push?
git revert HEAD. O revert cria um novo commit que reverte o anterior, deixando o histórico intacto: a escolha segura para branches compartilhadas. Fazer reset de um commit já enviado força todo mundo a reconciliar uma branch reescrita.