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á a 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 online do commit
Se o commit existir em seu repositório local e não tiver sido publicado no sua instância do GitHub Enterprise Server, 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 sua instância do GitHub Enterprise Server 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 sua instância do GitHub Enterprise Server, 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.
Corrigir a mensagem do commit com push mais recente
- 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
Corrigir mensagens do commit antigas ou em grandes quantidades
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.
-
Force o push dos commits corrigidos.
$ git push --force
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 uma nova ID. No entanto, nesse caso, cada commit que segue o commit corrigido também obterá uma nova ID, pois cada commit também contém a 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. O commit antigo não fará parte de um clone subsequente. No entanto, ele ainda poderá ser armazenado no cache do GitHub Enterprise e ser acessado por meio da ID do commit. Você deve contatar o seu administrador do site do GitHub Enterprise com a ID do commit antigo para que ele seja apagado do repositório remoto.