~/Como deletar um commit no git, local e remoto

Já aconteceu comigo mais de uma vez em ter submetido alguma mudança em meu repositório com um usuário errado.

Neste post, irei apenas explicar como deletar um commit em seu repositório local e em um repositório remoto caso você já tenha enviado o commit.

Excluir um commit local

Em seu repositório local, rode os seguinte comando:

git log --pretty=oneline --abbrev-commit

O comando acima vai resultar uma saída semelhante a essa:

e676a91 (HEAD -> master, origin/master, origin/HEAD) added webrick
7fc9b4b update in post description
568b45f Update post
fee3260 Link update
9daabce Link update
72cba48 Update on post structure

O commit e676a91 é o commit mais recente e o que queremos deletar, para isso usaremos rebase.

git rebase -i HEAD~2

Esse comando abrirá seu editor de texto padrão com seus dois commits mais recentes:

pick 7fc9b4b update in post description
pick e676a91 added webrick

# Rebase 568b45f..e676a91 onto 568b45f (2 commands)
#
# Commands:
# p, pick  = use commit
# r, reword  = use commit, but edit the commit message
# e, edit  = use commit, but stop for amending
# s, squash  = use commit, but meld into previous commit
# f, fixup  = like "squash", but discard this commit's log message

Devemos observar que o commit mais recente é que está na parte inferior, nesse caso na linha dois. Os comandos abaixo são apenas comentários que fornecem uma documentação do comando rebase, a única coisa que precisamos fazer é deletar a linha que corresponde ao commit que queremos excluir e salvar o arquivo.

Agora podemos ver que a alteração foi aplicada:

git log --pretty=oneline --abbrev-commit
7fc9b4b (HEAD -> master, origin/master, origin/HEAD) update in post description
568b45f Update post
fee3260 Link update
9daabce Link update
72cba48 Update on post structure

Excluir um commit remoto

Para remover um commit que você já enviou para o repositório remoto, você deve primeiro excluí-lo localmente como na etapa anterior e, em seguida, enviar suas alterações para o remoto.

git push --force

É importante ressaltar que você deve ter muito cuidado ao deletar commits porque uma vez que você fizer isso, eles desaparecerão para todo o sempre.

Que a força esteja com vocês!


Published Jun 13, 2021 by f0rmig4