git revert
git revert: reverter as alterações de um commit específico.
O git revert cria um novo commit que reverte as alterações feitas pelo commit indicado, na prática anulando os efeitos dele sem alterar o histórico de commits.
O propósito do git revert é oferecer um jeito seguro e limpo de desfazer alterações em um repositório sem reescrever o histórico. Isso é especialmente útil em ambientes colaborativos, onde reescrever o histórico (por exemplo, com o git reset) pode causar confusão e conflitos para os outros desenvolvedores que trabalham no mesmo projeto.
Quando você usa o git revert, o Git cria um novo commit que contém o inverso das alterações feitas no commit original. Esse novo commit é então adicionado ao histórico do repositório, deixando um registro claro tanto das alterações originais quanto da reversão delas.
O git revert é especialmente útil quando você precisa desfazer uma alteração específica introduzida em um commit anterior sem afetar nenhum dos commits que vieram depois dele. Isso permite remover cirurgicamente uma alteração problemática preservando a integridade do seu histórico de commits.
Exemplos
Digamos que você tem um histórico de commits assim:
a1b2c3d (HEAD -> main) Update README
b2c3d4e Fix typo in main code
c3d4e5f Add new feature
2a291cc Initial commitSe você quer reverter as alterações do commit Fix typo in main code (b2c3d4e), pode usar o git revert:
git revert b2c3d4eIsso vai abrir seu editor de texto padrão, pedindo que você digite uma mensagem de commit para o commit de revert. Depois que você salvar e fechar o editor, o Git vai criar um novo commit que reverte as alterações feitas em b2c3d4e:
f4b5a62 (HEAD -> main) Revert "Fix typo in main code"
a1b2c3d Update README
b2c3d4e Fix typo in main code
c3d4e5f Add new feature
2a291cc Initial commitAgora os efeitos do commit Fix typo in main code foram desfeitos, mas o commit em si continua fazendo parte do histórico, e um novo commit foi criado para registrar a reversão das alterações dele.
.gitignoregit checkoutgit configgit taggit worktree