Escrever mensagens de commit é uma arte.
Em alguns lugares você deve escrever em inglês, outros deve seguir algum padrão no estilo conventional commits, etc.
Mas não importa qual o estilo que você commita, alguma hora você vai querer mudar a mensagem.
Seja por um erro ortográfico, porquê você escreveu português ao invés de inglês, enfim.
Abaixo mostro alguns jeitos de mudar a mensagem de commit do git.
Para escrever esse texto usei como cobaia o repositório do meu metrônomo para Android.
Vamos ver o ‘git log’ dele:
commit 696c21542b6f5ed3f0802d0af947d1b3d31b17b5
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 09:27:57 2021 -0300
Alterada vers+úo gradle
commit 02812b7d0fe80506782332ccb85569e35c72f749
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 09:20:43 2021 -0300
Altera+º+Áes gradle
commit 5e1e8542932e441917492d5560d84d73d3777eb9
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 08:57:22 2021 -0300
Removido bin+írio compliado
Mudando a mensagem do último commit
Bom, como você deve ter percebido no log acima, os acentos estão estranhos. Então vou mudar o último commit para inglês.
Para mudar a mensagem do último commit, basta usar o mesmo comando git commit
, com a flag --amend
.
$ git commit --amend -m "Changed Gradle version"
[master 3f11445] Changed Gradle version
Date: Sun Dec 5 09:27:57 2021 -0300
1 file changed, 1 insertion(+), 1 deletion(-)
Ok, mudamos localmente… Mas no remoto ainda está a mensagem antiga…
Se você fizer simplesmente “git push” não vai funcionar, pois reescrevemos o histórico do repositório. Para forçar a reescrita, fazemos “git push -f”.
$ git push -f
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 416 bytes | 208.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To github.com:JosielSantos/android-metronome
+ 696c215...3f11445 master -> master (forced update)
ATENÇÃO, POR FAVOR! Não reescreva o histórico do repositório quando outras pessoas estiverem trabalhando na mesma branch que você; Isso pode sobrescrever commit dos amiguinhos!
Modificando uma ou mais mensagens, inclusive as mais antigas
Agora vamos usar o poderoso “git rebase”, de forma interativa, para modificar mensagens mais antigas, ou mais de uma mensagem.
Repare na mensagem do terceiro commit ali no log:
commit 5e1e8542932e441917492d5560d84d73d3777eb9
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 08:57:22 2021 -0300
Removido bin+írio compliado
Além do acento não estar em dia, também temos um errinho de digitação, “compliado”, ao invés de “compilado”.
Para mexer no terceiro commit, vamos pedir para o git os três últimos commits, com a expressão “HEAD~3”:
$ git rebase -i HEAD~3
Seu editor padrão configurado no Git será aberto com um textão, onde devemos dar “instruções” para o git:
pick 5e1e854 Removido bin?rio compliado
pick 02812b7 Altera??es gradle
pick 3f11445 Changed Gradle version
Vamos entender esse arquivinho:
- Primeira coluna: Comando para o git (pick)
- Segunda coluna: hash do commit
- Terceira coluna: mensagem do commit
Depois dessas linhas, o git adiciona também alguns comentários com um “help” de como usar os comandos.
O comando que nos interessa é o “reword”: “r, reword
Nesse caso, vamos alterar a linha do “compliado”:
reword 5e1e854 Removido bin?rio compliado
pick 02812b7 Altera??es gradle
pick 3f11445 Changed Gradle version
Salve o arquivo.
Depois de salvo, o git irá começar a abrir editores para você editar as novas mensagens; uma por vez. A cada arquivo que você modificar, você salva.
Nesse caso apenas um editor foi aberto e o git aplicou o rebase.
$ git log
commit fd8ecc3bed2b0842105ee49b65326933826b794f (HEAD -> master)
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 09:27:57 2021 -0300
Changed Gradle version
commit 7baed070a5e94060777e75d2a5c928dcf5f9ac6a
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 09:20:43 2021 -0300
Altera<C3><A7><C3><B5>es gradle
commit 8b1873188b338ad64ab2dda616671000b8b0dd46
Author: Josiel Santos <meu@email.net>
Date: Sun Dec 5 08:57:22 2021 -0300
Removed the compiled binary
Conferiu o log? Está trabalhando numa branch sozinho? Dalhe empurrar as alterações: git push -f
.
ATENÇÃO, POR FAVOR! Não reescreva o histórico do repositório quando outras pessoas estiverem trabalhando na mesma branch que você; Isso pode sobrescrever commit dos amiguinhos!
Fim
Bom, é isso.
Essa era a lição de hoje. Legal é que agora eu não esqueço mais quando precisar. 🙂
Qualquer crítica, elogio ou esculhambação… Comment here!