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 GitHub.com, vous pouvez corriger le message de commit avec la commande git commit --amend
.
- Sur la ligne de commande, accédez au dépôt qui contient le commit que vous voulez corriger.
- Tapez
git commit --amend
, puis appuyez sur Entrée. - Dans votre éditeur de texte, modifiez le message de commit et enregistrez le commit.
-
Vous pouvez ajouter un co-auteur en ajoutant un code de fin au commit. Pour plus d’informations, consultez « Création d’une validation avec plusieurs auteurs ».
-
Vous pouvez créer des commits pour le compte de votre organisation en ajoutant un code de fin au commit. Pour plus d’informations, consultez « Création d’une validation pour le compte d’une organisation ».
-
La nouvelle validation et le message s’affichent sur GitHub.com 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 GitHub.com, 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é
-
Suivez les étapes ci-dessus pour corriger le message de commit.
-
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.
-
Sur la ligne de commande, accédez au dépôt qui contient le commit que vous voulez corriger.
-
Utilisez la commande
git rebase -i HEAD~n
pour afficher une liste des derniersn
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
-
Remplacez
pick
parreword
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.
-
Enregistrez et fermez le fichier de liste de commits.
-
Dans chaque fichier de commit que vous obtenez, tapez le nouveau message de commit, enregistrez le fichier et fermez-le.
-
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 Cloud. 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 Cloud et accessible via l’ID de commit. Vous devez contacter avec l’ancien ID de commit pour le supprimer du dépôt distant.