Git Revert
Última atualização
git revert desfaz um commit criando um novo commit que aplica o inverso de suas alterações. Como ele adiciona histórico em vez de reescrevê-lo, o revert é a forma segura de desfazer um commit que já foi enviado - ao contrário de git reset, ele não força todos os outros a reconciliar um branch reescrito.
Experimente estes comandos no terminal playground - um shell real no seu navegador, sem nada para instalar.
Sintaxe
| Command | What it does |
|---|---|
git revert HEAD | Reverte o commit mais recente |
git revert <hash> | Reverte um commit específico pelo hash |
git revert HEAD~2..HEAD | Reverte um intervalo de commits |
git revert -n <hash> | Reverte mas ainda não faz o commit (apenas prepara as alterações) |
git revert -m 1 <merge-hash> | Reverte um commit de merge, mantendo o pai 1 |
Durante um revert
Se o revert encontrar um conflito, resolva-o e continue.
| Command | What it does |
|---|---|
git revert --continue | Retoma após resolver os conflitos |
git revert --abort | Cancela o revert em andamento |
git revert --skip | Pula o commit atual e continua |
revert vs reset
| Behavior | git revert | git reset |
|---|---|---|
| Reescreve o histórico | Não | Sim |
| Seguro em commits já enviados | Sim | Não |
| Cria um novo commit | Sim | Não |
| Desfaz um commit no meio | Sim | Complicado |
Perguntas frequentes sobre git revert
Qual é a diferença entre git revert e git reset?
git revert adiciona um novo commit que desfaz as alterações de um anterior, deixando o histórico intacto - seguro para commits que você já enviou. git reset move o ponteiro do seu branch para trás e reescreve o histórico, o que é aceitável para commits locais mas perigoso em branches compartilhados. Use revert para desfazer commits públicos e reset para desfazer os locais.Como reverto um commit que já foi enviado?
Execute
git revert <hash> (ou git revert HEAD para o mais recente) e depois envie o novo commit de revert. Como o revert não reescreve o histórico, essa é a forma correta de desfazer um commit compartilhado - sem force-push e sem transtorno para os colegas que já o baixaram.Como reverto um commit de merge?
Um commit de merge tem dois pais, então o Git precisa saber qual linha do histórico manter. Use
git revert -m 1 <merge-hash>, onde -m 1 diz ao Git para manter o primeiro pai (normalmente o branch para o qual você fez o merge). Reverter um merge desfaz as alterações mescladas mas mantém o merge no histórico.Posso reverter vários commits de uma vez?
Sim. Passe um intervalo como
git revert HEAD~2..HEAD para reverter os dois últimos commits, ou liste vários hashes. Por padrão, o Git cria um commit de revert para cada commit revertido; adicione -n para preparar todas as reversões sem fazer commit e depois faça um único commit você mesmo.Posso praticar isso online?
Sim. Abra o terminal playground para executar
git revert em um shell real no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre como desfazer alterações passo a passo.