Comment modifier des messages de commit non poussés ? Comment modifier des messages de commit poussés ?
Vous avez commité un (ou plusieurs) fichier mais vous voulez modifier le message du commit ?
Si le commit n'a pas été push, il suffit d'utiliser l'option "amend" de la commande commit :
$ git commit --amend
Votre éditeur de texte (Vi, ou Nano suivant votre git config) s'ouvrira pour vous permettre d'éditer le message associé au dernier commit.
Si vous souhaitez modifier le message en une ligne de commande, c'est possible :
$ git commit --amend -m "Mon nouveau message de commit"
Assurez vous que vous n'avez pas de modifications en cours dans votre dossier. Si les modifications sont staged elles seront commités avec.
Si vous avez déjà push le commit, il utiliser l'option amend comme précédement et forcer le git push :
$ git commit --amend -m "Mon nouveau message de commit"
$ git push -f
L'option -f
de git push, va forcer le push et donc réécrire l'historique sur la branche distante. Si vous avez des commits sur la branche distante que vous n'avez pas récupéré en local, ils seront écrasé !
Si vous voulez modifier le message de commit d'un ou plusieurs autre commit, on peut utiliser le git rebase
:
$ git rebase -i HEAD~5
On va pouvoir éditer les 5 derniers commits. Vous pouvez remplace le chiffre 5
dans la commande pour en modifier plus ou moins.
L'éditeur du rebase s'ouvrira pour vous proposer d'éditer les commits.
Modifiez les messages que vous souhaitez et change pick
par reword
au début des lignes modifiées :
reword 05c739aa7 fix: message modifié numéro 1
reword 1705379c0 fix: message modifié numéro 2
pick 9f474ea66 fix: message non modifié
pick 788a5a1f0 chore: message non modifié
pick 8923e670f fix: message non modifié
Sauvegardez les changements et fermez l'éditeur. Vous pouvez faire un git log pour vous assez que les messages sont ceux désirés.
Et enfin, il faudra push -f pour réécrire l'historique distant :
$ git push -f
Vous pouvez aussi choisir de supprimer un commit. Je détaille comment le faire ici Supprimer un commit local ou distant