Skip to main content

Changement d’un message de commit

Si un message de commit contient des informations peu claires, incorrectes ou sensibles, vous pouvez le modifier localement et pousser (push) un nouveau commit avec un nouveau message vers GitHub Enterprise Server. Vous pouvez également changer un message de commit pour ajouter des informations manquantes.

Réécriture du dernier message de commit

Vous pouvez changer le dernier message de commit avec la commande git commit --amend.

Dans Git, le texte du message de commit fait partie du commit. Le changement du message de commit change l’ID de commit, c’est-à-dire la somme de contrôle SHA1 qui nomme le commit. En fait, vous créez un commit qui remplace l’ancien.

Le commit n’a pas été poussé en ligne

Si le commit existe uniquement dans votre référentiel local et n’a pas été poussé sur votre instance GitHub Enterprise Server, vous pouvez corriger le message de commit avec la commande git commit --amend.

  1. Sur la ligne de commande, accédez au dépôt qui contient le commit que vous voulez corriger.
  2. Tapez git commit --amend, puis appuyez sur Entrée.
  3. Dans votre éditeur de texte, modifiez le message de commit et enregistrez le commit.

La nouvelle validation et le message s’affichent sur votre instance GitHub Enterprise Server lors de l’envoi (push) suivant.

Vous pouvez changer l’éditeur de texte par défaut de Git en changeant le paramètre core.editor. Pour plus d’informations, consultez Configuration du client de base dans le manuel Git.

Correction d’anciens messages ou de plusieurs messages de commit

Si vous avez déjà poussé le commit sur votre instance GitHub Enterprise Server, vous devez forcer la poussée d’un commit avec un message corrigé.

Nous vous déconseillons fortement de forcer la poussée, car cela change l’historique de votre dépôt. Si vous forcez la poussée, les personnes qui ont déjà cloné votre dépôt doivent corriger manuellement leur historique local. Pour plus d’informations, consultez Récupération à partir d’un rebasage en amont dans le manuel Git.

Changement du message du dernier commit poussé

  1. Suivez les étapes ci-dessus pour corriger le message de commit.

  2. Utilisez la commande push --force-with-lease pour forcer la poussée sur l’ancien commit.

    git push --force-with-lease origin EXAMPLE-BRANCH
    

Changement du message d’anciens ou de plusieurs messages de commit

Si vous devez corriger le message de plusieurs commits ou d’un ancien commit, vous pouvez utiliser un rebasage interactif, puis forcer la poussée pour changer l’historique des commits.

  1. Sur la ligne de commande, accédez au dépôt qui contient le commit que vous voulez corriger.

  2. Utilisez la commande git rebase -i HEAD~n pour afficher une liste des derniers n commits dans votre éditeur de texte par défaut.

    # Displays a list of the last 3 commits on the current branch
    $ git rebase -i HEAD~3
    

    La liste ressemble à la suivante :

    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. Remplacez pick par reword avant chaque message de commit à changer.

    pick e499d89 Delete CNAME
    reword 0c39034 Better README
    reword f7fde4a Change the commit message but push the same commit.
    
  4. Enregistrez et fermez le fichier de liste de commits.

  5. Dans chaque fichier de commit que vous obtenez, tapez le nouveau message de commit, enregistrez le fichier et fermez-le.

  6. Quand vous êtes prêt à pousser vos changements sur GitHub, utilisez la commande push --force pour forcer la poussée sur l’ancien commit.

    git push --force origin EXAMPLE-BRANCH
    

Pour plus d’informations sur le rebasage interactif, consultez Mode interactif dans le manuel Git.

Comme auparavant, la correction du message de commit entraîne un nouveau commit avec un nouvel ID. Toutefois, dans ce cas, chaque commit qui suit le commit corrigé obtient également un nouvel ID, car chaque commit contient également l’ID de son parent.

Si vous avez ajouté des informations sensibles dans un message de commit, la poussée forcée d’un commit avec un commit corrigé peut ne pas supprimer le commit d’origine dans GitHub Enterprise Server. L’ancien commit ne fait pas partie des clones effectués par la suite, mais il peut toujours être mis en cache sur GitHub Enterprise Server et accessible via l’ID de commit. Vous devez contacter votre administrateur de site avec l’ancien ID de commit pour le supprimer du dépôt distant.

Pour aller plus loin