Erros são comuns, todos nós os cometemos. É por isso que eles colocam borrachas nos lápis. E isso não é diferente com ferramentas como o Git. Embora algumas alterações possam ser difíceis de desfazer, geralmente há uma maneira.
E daí se você quiser modificar uma mensagem de commit existente? Felizmente, isso é simples de fazer no Git, mas o método pode mudar um pouco dependendo de alguns fatores.
Corrigir o último commit, ainda não enviado para o remoto
Este é o caso mais simples, pois não há necessidade de modificar um repositório remoto, você só precisa modificar o seu próprio. Nesse caso, você pode usar o seguinte comando:
$ git commit --amend
A execução deste comando abrirá um editor onde você pode modificar o último mensagem de confirmação. Assim que terminar e salvar/fechar o editor, a mensagem do commit será alterada.
Pessoalmente, prefiro fazer a maioria das coisas na linha de comando, o que você pode fazer adicionando um argumento e uma mensagem ao comando acima:
$ git commit --amend -m "Added a new file"
Fazer isso dessa maneira não abrirá o editor, mas apenas modificará a mensagem de confirmação imediatamente.
Corrigir o último commit, enviado para remoto
Este é outro caso comum, e é um pouco mais difícil de corrigir, não apenas porque precisamos modificar nosso próprio repositório, mas também precisamos modificar o repositório remoto, que pode estar mais à frente do que seu branch local.
O primeiro passo é alterar o último commit, assim como fizemos na seção anterior:
$ git commit --amend -m "Added a new file"
Em seguida, você precisa enviar essas alterações para o repositório remoto. No entanto, isso deve ser feito usando o --force
bandeira.
$ git push <remote> <branch> --force
Precisamos fazer desta forma para sobrescrever o repositório remoto com nosso próprio estado local.
Esteja ciente de que, ao forçar o empurrão, você também perder quaisquer commits no branch local que você ainda não tenha em seu branch local. Prossiga com cuidado!
Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!
Se você conseguir detectar o erro com rapidez suficiente, fazer a alteração não será um problema. Caso contrário, talvez seja necessário encontrar outra solução para evitar a perda de quaisquer alterações feitas após a mensagem de confirmação que você deseja alterar.
Usar rebase interativo
Outra opção, mais flexível que as soluções anteriores descritas, é usar um rebase interativo. Isso permite que você inspecione os últimos N commits e faça alterações neles, incluindo picking, squashing, etc.
Para iniciar o rebase, você pode usar o seguinte comando:
$ git rebase -i HEAD~n
Aqui, n
é o número de commits que você deseja inspecionar e editar. Você verá uma lista de commits, semelhante a esta:
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file
Como você pode ver, todos os últimos N commits estão listados e você pode modificar suas mensagens conforme necessário.