• JP

Git: Desfazendo commits

Quando precisamos desfazer algum commit feito de forma incorreta ou por outro motivo. A seguir alguns comandos Git que vão te ajudar a resolver este problema.


Utilizando o modo --soft como argumento

git reset --soft HEAD~

Neste caso o último commit será desfeito na atual branch (HEAD). O arquivo não será alterado de acordo com as alterações anteriores ao commit. O que vai acontecer é que o arquivo ficará disponível para um novo commit. Se você executar o comando

git status

Será possível ver o(s) arquivo(s) na seção "changes to be committed", ou seja, o commit foi desfeito e está disponível para ser comitado.


Podemos melhorar este comando passando o número de commits em que você deseja desfazer. Por ex:

git reset --soft HEAD~3

O número 3 fará com que os últimos 3 commits sejam desfeitos. É bem simples.

Utilizando o modo --hard como argumento

git reset --hard HEAD~

O modo --hard possibilita que além de desfazer o commit, o arquivo seja alterado com base nas alterações anteriores ao commit. Caso precise desfazer um ou mais commits conforme mostrado no primeiro exemplo, a regra é a mesma.


Existem outros modos de reset, veja a documentação oficial do Git