GIT: Como renomear mensagens de commit em um repositório
As vezes a gente passa tanto tempo escrevendo um código que na hora de fazer o commit vem aquela sensação de alívio e a gente chega até escreve a mensagem de commit errado, né? 🤣
Neste mini tutorial eu vou te mostrar como você pode renomear o commit anterior usando a opção amend
do Git. Se você ainda não sabe nada sobre git, dá uma olhada neste guia básico primeiro que vai ser de imensa ajuda!
Atenção! Só é possível renomear um commit usando a opção --force
do comando git push
. Isto é perigoso e pode te levar a perder commits que estiverem no servidor mas não estiverem em sua máquina local. Use por sua conta e risco!
Como o tópico pode ficar complicado rapidinho, eu gravei este vídeo pra te ajudar a entender o processo:
Como renomear o último commit do repositório
Para renomear o último commit nós podemos utilizar o comando git commit --amend, que só opera sobre o último commit feito.
Vejamos este git log
como exemplo, o repositório tem exatamente 3 commits:
O último commit diz feat: add sample map
. Vamos supor que eu gostaria de traduzir esta mensagem de commit para português. Eu posso renomear aquele commit com o seguinte comando:
$ git commit --amend -m 'feat: adiciona mapa de exemplo'
Pronto, simples assim! O último commit foi renomeado:
Note que nosso branch agora diz HEAD -> main
e não está mais de acordo com o upstream (github, gitlab, bitbucket…). Isto acontece porque ao renomear um commit o histórico GIT é modificado e portanto você só consegue atualizar seu repositório usando o git push
com a opção --force
.
Para enviar o commit ao servidor, precisamos agora fazer um git push --force
:
$ git push origin main --force
Como renomear muitas mensagens de commit
A opção --amend
só nos permite renomear a última mensagem de commit do histórico. Se você precisa renomear mensagens mais antigas, ou diversas mensagens de uma vez só, vai precisar utilizar um outro comando chamado rebase
.
O git rebase
te permite revisitar qualquer porção do seu histórico e modificar como quiser: renomear commits, remover commits, mesclar dois mais mais commits num só…
Para renomear muitas mensagens de commit de uma vez só, vamos rodar o seguinte comando:
$ git rebase -i HEAD~2
Note que a opção -i
significa interactive, ou seja: o comando vai aguardar a nossa intervenção pra fazer quaisquer alterações.
O argumento HEAD~2
indica ao git que nós queremos rever 2
commits, a partir do último commit (HEAD
). O git então vai abrir seu editor de texto padrão, que no meu caso é o VIM – Se você fica perdidim quando o VIM aparece na sua frente, dá uma olhada neste artigo que eu escrevi sobre como começar com VIM do zero. A tela vai ficar assim:
Bueno, as linhas que começam com pick
são commits que seu repositório conhece. Para todas as mensagens de commit que você quiser renomear, basta você trocar a palavra pick
por reword
.
Quando você salvar o arquivo, para cada commit que você decidiu renomear, um editor de texto vai se abrir. Veja:
E pronto, desta forma você consegue renomear quantos commits quiser. Não se esqueça de que para enviar estas alterações ao servidor git, seja ele github, gitlab, Bitbucket ou qualquer outro, você precisa fazer um git push --force
, porque isto efetivamente altera o histórico do seu repositório.
Comentários