2
respostas

Como alterar a mensagem de um commit que já foi enviado anteriormente?

Acabei digitando um caractere errado na mensagem de um commit e gostaria de alterá-la. Porém, no log é possível ver que esse commit que quero alterar está logo antes de outro commit já feito, como pode ser observado na imagem...

Como faço então para alterar somente esse commit, sem prejudicar os mais recentes? É possível?

Obs: era para ser escrito "Docker", acabei digitando "Kocker" :/ A imagem mostra uma linha de comando do Git Bash apresentado o log de commits

2 respostas

44

Existem 3 situações diferentes, que vão ficando cada vez mais complexas:

Editar o último commit local - ANTES DO PUSH: O git commit --amend vai abrir seu editor, com o conteúdo da mensagem do último commit e você pode editar tranquilamente.

Editar commits mais antigos - ANTES DO PUSH: Você vai precisar fazer um rebase do seu histórico, que é mais complexo que o processo anterior:

$ git rebase -i HEAD~3 # Mostra a lista dos 3 últimos commits A lista vai ser mais ou menos assim:

pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same commit.

Rebase 9fdb3bd..f7fde4a onto 9fdb3bd

#

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

x, exec = run command (the rest of the line) using shell

#

These lines can be re-ordered; they are executed from top to bottom.

#

If you remove a line here THAT COMMIT WILL BE LOST.

#

However, if you remove everything, the rebase will be aborted.

#

Note that empty commits are commented out

Altere pick para reword nos commits que você quer editar a mensagem:

pick e499d89 Delete CNAME reword 0c39034 Better README reword f7fde4a Change the commit message but push the same commit. Salve e feche o arquivo. Depois disso o git vai abrir cada um dos commits marcados com reword para edição. Edite as mensagens, salve e feche.

Alterar os commits DEPOIS DO PUSH Antes de mais nada, isso é altamente não recomendado. Isso pode quebrar o respositório e dar muito trabalho. 99.9% das vezes é melhor deixar o commit errado.

Para alterar o histórico depois do push, basta seguir um dos passos acima e depois executar:

git push --force Fontes:

  1. Documentação do git
  2. Guia do Github - em Inglês

Obrigado, eu consegui aqui, porém percebi que isso influencia na ordem dos commits no histórico, não sei o porquê, mas devo ter feito algo de errado... Queria manter igual o tutorial, mas vi nas aulas posteriores que tem como voltar, então tá tranquilo. Só é uma pena que eu vi tarde e tive que começar do início por causa do meu TOC :/

Mas valeu o aprendizado :)

Enfim, obrigado!