Como modificar as mensagens dos commits antigos?

Olá todos!

Suponham que em um repositório local haja diversos commits. Gostaria de saber se há alguma
maneira de editar a mensagem destes commits, pois gostaria de acrescentar alguns detalhes.

Além disso, os commits também foram enviados (push) a um repositório remoto. Haveria
alguma maneira de atualizar este repositório remoto com as novas mensagens?

Agradeço a atenção!

1 curtida

Antes de continuar, é importante dizer que o mais tranquilo seria deixar a mensagem como está.

Os commits no Git são imutáveis. Sempre que você mudar algo, na verdade você está criando outro commit. Portanto, você está reescrevendo o histórico do seu repositório.

Pior ainda é mudar o histórico quando você está trabalhando em equipe e outras pessoas estão efetuando outras mudanças.

Mas vamos lá!


Se for o último commit, você pode fazer:

git commit --amend -m "Nova mensagem"

Para mudar mensagens de commits anteriores ao último commit, você pode usar o git rebase -i (modo interativo do rebase):

  1. Procure o hash do commit que você quer mudar como git log. Ex: f0b5417
  2. Execute o comando git rebase -i f0b5417~1 (repare no ~1, que pega o commit anterior)
  3. Será aberto um editor de texto. Mude de pick para reward o commit com a mensagem incorreta. Salve o arquivo e feche o editor.
  4. O editor de texto vai abrir de novo no commit que você colocou reword. Corrija a mensagem! Salve o arquivo e feche o editor.

Os commits teriam as mensagens modificadas. Mas ao tentar dar push para o repositório remoto, irá dar erro…

Você precisará forçar a barra no push para que o Git aceitat mudar o histórico do repositório remoto.

Antes de continuar, tome cuidado e fale para a sua equipe não comitar nada. Faça o pull do repositório remoto e faça:

git push origin --force master

Mas lembrando: É MELHOR NÃO FAZER!

1 curtida