Comment modifier ou reformuler le message d'un commit de fusion?
git commit --amend
fonctionne si c'est le dernier commit effectué ( HEAD
), mais que se passe-t-il s'il vient avant HEAD
?
git rebase -i HEAD~5
ne répertorie pas les validations de fusion.
! [rejected] HEAD -> master (non-fast-forward)error: failed to push some refs to
HEAD~5
est le parent du commit que vous souhaitez modifier (généralement sha1 ^).--preserve-merges
est maintenant--rebase-merges
Notez que, à partir de git1.7.9.6 (et git1.7.10 +),
git merge
lui - même déclenchera toujours l'éditeur , pour que vous puissiez ajouter des détails à une fusion.Il introduit également une variable d'environnement
GIT_MERGE_AUTOEDIT
pour aider les scripts plus anciens à refuser ce comportement.Voir « Anticipation de Git 1.7.10 »:
Linus a dit:
Notez qu'avant Git 2.17 (Q2 2018), "
git rebase -p
" les messages de journal déformés d'un commit de fusion sont désormais corrigés.Voir commit ed5144d (08 février 2018) par Gregory Herrero (``) .
Suggéré par: Vegard Nossum (
vegard
) et Quentin Casasnovas (casasnovas
) .(Fusionné par Junio C Hamano -
gitster
- in commit 8b49408 , 27 fév 2018)Avec Git 2.23 (Q2 2019), une
merge -c
instruction " " pendant "git rebase --rebase-merges
" devrait donner à l'utilisateur une chance d'éditer le message du journal, même s'il n'est pas nécessaire de créer une nouvelle fusion et de remplacer l'existant (c'est-à-dire d'avance rapide à la place ), mais pas.Ce qui a été corrigé.
Voir commit 6df8df0 (02 mai 2019) par Phillip Wood (
phillipwood
) .(Fusionné par Junio C Hamano -
gitster
- in commit c510261 , 13 juin 2019)la source
Une autre bonne réponse en utilisant uniquement des commandes primitives - par knittl https://stackoverflow.com/a/7599522/94687 :
ou une meilleure commande de rebase finale (plus correcte):
BTW, l'utilisation des commandes primitives pourrait avoir la bonne "fonctionnalité" de ne pas consommer trop de CPU et de vous faire attendre un temps inconnu jusqu'à ce que Git finisse de penser à la liste des commits devant être rebasés dans le cas de
git rebase -p -i HEAD^^^^
(une telle commande qui entraînerait une liste de seulement 4 derniers commits avec la fusion comme dernier dans mon cas dans mon cas a pris environ 50 secondes!).la source
git merge --edit
Vous permet de donner le commentaire même en cas de fusion non interactive.
git merge --edit --no-ff
peut être utile si vous suivez git flow avec rebasage sur la branche de développement et fusion avec elle sans avance rapide.la source
Pour les versions actuelles de Git (Mai 2020):
git rebase -i -r <parent>
,puis remplacez dans l'éditeur
merge -C ...
parmerge -c ...
.Cela ouvrira le message de validation dans l'éditeur lors du rebasage, où vous pourrez le modifier.
(Merci à VonC pour l' allusion .)
la source
La
git rebase -i HEAD~5
commande fait apparaître l'éditeur. Il répertorie les commits spécifiés (dans ce cas, cinq d'entre eux). La première colonne contientpick
pour chaque commit. Remplacez simplementpick
parreword
dans cet éditeur et enregistrez + fermez l'éditeur. Ensuite git affiche l'éditeur pour tous les commits où vous avez changépick
àreword
et vous permettra de modifier le message de livraison .la source
-p
à lagit rebase
commande.