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 your GitHub Enterprise Server instance, 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".
O novo commit e a mensagem aparecerão no your GitHub Enterprise Server instance 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 your GitHub Enterprise Server instance, 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-with-lease
para fazer push forçado sobre o commit antigo.$ git push --force-with-lease origin 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 origin 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 Enterprise Server. O commit antigo não fará parte de um clone subsequente. No entanto, ele ainda poderá ser armazenado no cache do GitHub Enterprise Server e ser acessado por meio do ID do commit. Você deve contatar o your site administrator com o ID do commit antigo para que ele seja apagado do repositório remoto.