git revert

Snapshots básicos

Desfaz um commit criando um novo commit


O comando 'git revert' desfaz um commit anterior adicionando um novo commit que aplica a alteração oposta. O histórico não é reescrito — o commit original fica — então é o jeito seguro de desfazer commits já enviados e compartilhados. Pode haver conflito se commits posteriores mexeram nas mesmas linhas; resolva e depois git revert --continue.

Sinopse

git revert [--[no-]edit] [-n] [-m <parent-number>] <commit>...
git revert (--continue | --skip | --abort | --quit)
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (1)

Não abre o editor; mantém a mensagem padrão "Revert …".

RecomendadoA mensagem padrão do revert costuma estar certa

Exemplo

git revert --no-edit HEAD

Intermediário (1)

Aplica as alterações opostas ao diretório de trabalho e à área de preparação sem fazer commit.

Quando necessárioJuntar vários reverts num só commit

Exemplo

git revert -n HEAD HEAD~1

Avançado (1)

Para um commit de merge: o número do pai (geralmente 1) cujo lado é mantido.

Quando necessárioA única forma de reverter um commit de merge

Exemplo

git revert -m 1 HEAD

Escolhendo a opção certa

revert versus reset

Duas formas de desfazer commits

ComandoHistóricoSeguro após o push?
git revert <commit>Adiciona um commit que desfazSim
git reset --hard <commit>Remove commits do branchNão — exige um push forçado

Exemplos

Desfazer o último commit

git revert HEAD

Cria um commit que desfaz HEAD.


Desfazer um commit mais antigo

git revert a1b2c3d

Desfaz esse commit e mantém os posteriores.


Desfazer um merge

git revert -m 1 <merge-commit>

Desfaz as alterações que um merge trouxe.

Exemplos de fluxos de trabalho

1
git log --oneline

Encontrar o commit

2
git revert a1b2c3d

Criar o commit que desfaz

3
git push

Compartilhá-lo — sem forçar

Solução de problemas

error: commit is a merge but no -m option was given

Causa: Um merge tem dois pais

Use git revert -m 1 <commit>

CONFLITO durante o revert

Causa: Commits posteriores alteraram as mesmas linhas

Corrija os arquivos, faça git add e depois git revert --continue (ou --abort)

Dicas e armadilhas

Boas práticas

  • ✓Use revert em commits compartilhados; reset só em commits locais.
  • ✓Explique o porquê na mensagem do revert.
  • ✓Reverta primeiro o mais recente ao desfazer vários commits.

Erros comuns

  • ✗Usar git reset em commits enviados em vez de git revert, obrigando todos a consertar o histórico.
  • ✗Reverter um merge sem -m.
  • ✗Fazer merge de novo de um branch revertido e não entender por que as alterações não voltam — reverta o revert antes.

Perguntas frequentes

A:

Não. Ele adiciona um novo commit; o original fica no histórico.

A:

Sim — isso reaplica a alteração original.

A:

git revert --abort.