O comando git revert pode ser considerado um comando do tipo "desfazer"; no entanto, ele não é uma operação tradicional de desfazer. Em vez de remover o commit do histórico do projeto, ele descobre como desfazer as alterações introduzidas pelo commit e anexa um commit novo com o conteúdo resultante. Isto evita que o Git perca o histórico, o que é importante para a integridade do histórico de revisão e para uma colaboração confiável.

O processo de reversão deve ser usado quando você quer aplicar o inverso do commit do histórico do projeto. Isso pode ser útil, por exemplo, se você estiver acompanhando um bug e descobrir que ele foi introduzido por um único commit. Em vez de ir até ela por conta própria, corrigir e confirmar um novo snapshot, você pode usar o git revert para fazer tudo isso na hora.

Git revert – Tutoriais do Git da Atlassian

Como funciona

$ mkdir git_revert_test
$ cd git_revert_test/
$ git init .
Initialized empty Git repository in /git_revert_test/.git/
$ touch demo_file
$ git add demo_file
$ git commit -am"initial commit"
[master (root-commit) 299b15f] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 demo_file
$ echo "initial content" >> demo_file
$ git commit -am"add new content to demo file"
[master 3602d88] add new content to demo file
n 1 file changed, 1 insertion(+)
$ echo "prepended line content" >> demo_file
$ git commit -am"prepend content to demo file"
[master 86bb32e] prepend content to demo file
 1 file changed, 1 insertion(+)
$ git log --oneline
86bb32e prepend content to demo file
3602d88 add new content to demo file
299b15f initial commit

Aqui, a gente inicializou um repositório em um diretório recém-criado chamado git_revert_test. A gente fez três commits no repositório em que foi adicionado um arquivo demo_file, bem como modificou o conteúdo duas vezes. No final do procedimento de configuração do repositório, a gente invocou git log para exibir o histórico de commits, exibindo um total de três commits. Com o repositório nesse estado, a gente já pode iniciar um git revert.

$ git revert HEAD [master b9cd081] Revert "prepend content to demo file" 1 file changed, 1 deletion(-)

O git revert espera que uma referência de commit tenha passado e não vai ser executado sem uma. Aqui, a gente passou a referência HEAD. Isso vai reverter o último commit. Este é o mesmo comportamento se a gente tivesse revertido para o commit 3602d8815dbfa78cd37cd4d189552764b5e96c58. Semelhante a um merge, uma reversão vai criar um commit novo que vai abrir o editor do sistema configurado, exibindo uma mensagem de commit nova. Assim que uma mensagem de commit tiver sido digitada e salva, o Git vai continuar a operação. Agora, a gente pode examinar o estado do repositório usando git log e ver que há um commit novo adicionado ao registro anterior:

$ git log --oneline 1061e79 Revert "prepend content to demo file" 86bb32e prepend content to demo file 3602d88 add new content to demo file 299b15f initial commit

O terceiro commit ainda está no histórico do projeto após a reversão. Em vez de excluir, o git revert adicionou um commit novo que desfaz as modificações. Por isso, os segundo e quarto commits representam a mesma base de código, e o terceiro ainda está no histórico caso a gente queira voltar atrás.

Opções comuns

-e
--edit

Esta é uma opção padrão e não precisa ser especificada. Esta opção vai abrir o editor do sistema configurado e avisar quando se deve editar a mensagem de commit antes de confirmar a reversão.

--no-edit

Esta opção é o inverso da opção -e. A reversão não vai abrir o editor.

-n
--no-commit

Redefinir x reverter

É importante entender que git revert desfaz apenas um commit—ele não "reverte" de volta ao estado anterior de um projeto removendo todos os commits realizados. No Git, isto é chamado de reset, não de revert.

Git revert vs Git reset – Tutoriais do Git da Atlassian

Quer aprender a usar o git revert?

Tente este tutorial interativo.

Comece agora mesmo