Reescrever a mensagem do commit mais recente
Você pode alterar a mensagem de 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 somente em seu repositório local e não tiver sido enviado ao GitHub.com, será possível corrigir a mensagem de 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 saber mais, confira Criar um commit com vários autores.
-
É possível criar commits em nome da sua organização adicionando um trailer ao commit. Para saber mais, confira Criar um commit em nome de uma organização.
-
O novo commit e a nova mensagem aparecerão no GitHub.com na próxima vez que você fizer um push.
Tip
Altere o editor de texto padrão do Git alterando a configuração core.editor
. Para obter mais informações, confira Configuração básica do cliente no manual do Git.
Corrigir mensagens do commit antigas ou em grandes quantidades
Se você já tiver enviado o commit ao GitHub.com, será necessário forçar o push de um commit com uma mensagem corrigida.
Warning
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, confira Como se recuperar da troca de base upstream no manual do Git.
Alteração da mensagem de commit enviada por psuh mais recentemente
-
Siga as etapas descritas acima para alterar a mensagem de commit.
-
Use o comando
push --force-with-lease
para forçar o push sobre o commit antigo.git push --force-with-lease origin EXAMPLE-BRANCH
Alteração das mensagens de commit mais antigo ou múltiplo
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 ver a lista dos últimos commitsn
no 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 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
-
Substitua
pick
porreword
antes de cada mensagem de 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 saber mais sobre a troca de base interativa, confira Modo interativo no manual do Git.
Note
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.
Warning
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 conosco por meio do Portal de suporte do GitHub com o ID do commit antigo para que ele seja apagado do repositório remoto.