Skip to main content

Alterar a mensagem do commit

Se uma mensagem do commit contiver informações imprecisas, incorretas ou confidenciais, você poderá corrigi-las localmente e fazer push de um novo commit com uma nova mensagem para o GitHub. Também é possível alterar uma mensagem do commit para adicionar informações ausentes.

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.

  1. Na linha de comando, navegue até o repositório que contém o commit que você deseja corrigir.
  2. Digite git commit --amend e pressione Enter.
  3. No editor de texto, edite a mensagem do commit e salve o commit.

O novo commit e a nova mensagem aparecerão no GitHub.com na próxima vez que você fizer um push.

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.

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

  1. Siga as etapas descritas acima para alterar a mensagem de commit.

  2. 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.

  1. Na linha de comando, navegue até o repositório que contém o commit que você deseja corrigir.

  2. Use o comando git rebase -i HEAD~n para ver a lista dos últimos commits n 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
    
  3. Substitua pick por reword 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.
    
  4. Salve e feche o arquivo da lista de commits.

  5. Em cada arquivo de commit resultante, digite a nova mensagem do commit, salve o arquivo e feche-o.

  6. 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 a troca de base interativa, confira "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 conosco por meio do Portal de suporte do GitHub com o ID do commit antigo para que ele seja apagado do repositório remoto.

Leitura adicional