Reescrever a mensagem do commit mais recente
Você pode alterar a mensagem do commit mais recente usando o comando git commit --amend
.
No Git, o texto da mensagem do commit faz parte do commit. Alterar a mensagem do commit mudará o ID do commit, isto é, a soma de verificação SHA1 que nomeia o commit. Efetivamente, você está criando um commit que substitui o antigo.
Não foi feito push on-line do commit
Se o commit existir em seu repositório local e não tiver sido publicado no GitHub, você poderá corrigir a mensagem do commit com o comando git commit --amend
.
-
Na linha de comando, navegue até o repositório que contém o commit que você deseja corrigir.
-
Digite
git commit --amend
e pressione Enter. -
No editor de texto, edite a mensagem do commit e salve o commit.
-
Você pode adicionar um coautor incluindo um trailer no commit. Para obter mais informações, consulte "Criar um commit com vários autores".
-
É possível criar commits em nome da sua organização adicionando um trailer ao commit. Para obter mais informações, consulte "Criar um commit em nome de uma organização"
-
O novo commit e a mensagem aparecerão no GitHub na próxima vez que você fizer push.
Você pode alterar o editor de texto padrão do Git mudando a configuração core.editor
. Para obter mais informações, consulte a seção sobre a "configuração básica de cliente" no manual do Git.
Corrigir mensagens do commit antigas ou em grandes quantidades
Se você já tiver feito push do commit no GitHub, será necessário forçar o push de um commit com uma mensagem corrigida.
O recomendável é evitar tanto quanto possível o push forçado, uma vez que isso altera o histórico do repositório. No caso de push forçado, as pessoas que já clonaram o repositório terão que corrigir manualmente o respectivo histórico local. Para obter mais informações, consulte a seção sobre como "recuperar usando rebase upstream" no manual do Git.
Alterar a mensagem do commit enviado mais recentemente
- Siga as etapas acima para corrigir a mensagem do commit.
- Use o comando
push --force
para forçar o push sobre o commit antigo.$ git push --force example-branch
Alterar a mensagem das mensagens mais antigas ou múltiplas do commit
Se precisar corrigir a mensagem de vários commits ou de um commit antigo, você pode usar o rebase interativo e, em seguida, forçar o push para alterar o histórico do commit.
-
Na linha de comando, navegue até o repositório que contém o commit que você deseja corrigir.
-
Use o comando
git rebase -i HEAD~n
para exibir uma lista dosn
últimos commits no seu editor de texto padrão.# Displays a list of the last 3 commits on the current branch $ git rebase -i HEAD~3
A lista ficará parecida com o seguinte:
pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same commit. # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd # # Comandos: # p, pick = usar commit # r, reword = usar commit, mas editar a mensagem do commit # e, edit = usar commit, mas interromper para correção # s, squash = usar commit, mas combinar com commit anterior # f, fixup = como "squash", mas descartar a mensagem de log do commit # x, exec = executar o comando (o restante da linha) usando shell # # Essas linhas podem ser reordenadas; elas são executadas de cima para baixo. # # Se você remover uma linha aqui ESSE COMMIT SERÁ PERDIDO. # # No entanto, se você remover tudo, o rebase será anulado. # # Observe que commits vazios são comentados
-
Substitua
pick
porreword
antes de cada mensagem do commit que deseja alterar.pick e499d89 Delete CNAME reword 0c39034 Better README reword f7fde4a Change the commit message but push the same commit.
-
Salve e feche o arquivo da lista de commits.
-
Em cada arquivo de commit resultante, digite a nova mensagem do commit, salve o arquivo e feche-o.
-
Quando estiver pronto para fazer push das suas alterações para o GitHub, use o comando push --force para fazer push forçado sobre o commit antigo.
$ git push --force example-branch
Para obter mais informações sobre rebase interativo, consulte a seção sobre o "modo interativo" no manual do Git.
Tal como antes, corrigir a mensagem do commit resultará em um novo commit com um novo ID. No entanto, nesse caso, cada commit que segue o commit corrigido também obterá um novo ID, pois cada commit também contém o id de seu principal.
Se você incluiu informações confidenciais em uma mensagem do commit, forçar o push de um commit com um commit corrigido pode não remover o commit original do GitHub. O commit antigo não fará parte de um clone subsequente. No entanto, ele ainda poderá ser armazenado no cache do GitHub e ser acessado por meio do ID do commit. Você deve contatar o Suporte do GitHub ou Suporte do GitHub Premium com o ID do commit antigo para que ele seja apagado do repositório remoto.