Disons que j'ai 3 commits non poussés. Maintenant, je veux changer le message de validation du premier ou deuxième commit (les changer pour le troisième est simple en utilisant git commit --amend
). Comment faire ça?Comment modifier le message de validation d'une validation dans git?
Répondre
rebondir sur la sous-question: est-il un git commit --amend
pour une précédente commit (et pas seulement le dernier), vous pouvez essayer quelque chose comme (non encore testé, mais Colin O'Dell mentionne dans the comments avoir écrit un script pour elle colinodell/git-amend-old):
git checkout -b tmp
git reset --hard HEAD~2
git commit -amend
git rebase --onto tmp [email protected]{1} master
Ce serait comme:
x---x---x---x---x
^
|
(master*) (* = current branch)
git checkout -b tmp
x---x---x---x---x
^
|
(tmp*, master)
git reset --hard HEAD~2
x---x---x---x---x
^ ^
| |
(tmp*) (master)
git commit -amend
y (tmp*)
/
x---x---x---x---x
| ^
([email protected]{1}) |
(master)
git rebase --onto tmp [email protected]{1} master
(tmp)
y---x'---x' (master*)
/
x---x---x---x---x (only referenced in reflog)
Sur le 'rebase --onto', voir http://stackoverflow.com/questions/1994463/how-to-cherry-pick-a-range-of-commits-and-merge-into-another-branch/1994491 # 1994491 – VonC
Pourquoi s'embêter? rebase -i est beaucoup plus simple – CharlesB
@CharlesB: Je suis d'accord, 'rebase -i' est plus simple, mais il est aussi * interactif *. Cela signifie que vous ne pouvez pas l'inclure dans un script ou dans un alias regroupant une séquence de commandes. – VonC
Il s'agit d'un travail pour la puissante commande git rebase -i
. Consultez également la section Interactive Rebasing du livre Git.
Peut-être une question stupide, mais 'git rebase -i' peut-il être utilisé de manière non interactive? – Mot
Non, pas en tant que tel. Cependant, tout ce que 'git rebase -i' peut faire (en théorie) en utilisant d'autres commandes Git scriptables. Il serait donc possible d'écrire un script pour modifier un message de commit précédent, mais je ne sais pas si une telle chose existe encore. –
félicitations sur votre 15ème badge d'or;) Vous êtes maintenant un vrai git! (Err ... git-guru, je voulais dire) (je veux dire, gourou sur le nom de l'outil git) (je veux dire, vous savez ce que je veux dire) – VonC
C'est un peu semblable à http://stackoverflow.com/questions/3926768/amend-a-commit-that-wasnt-the -previous-commit. J'ai essayé (ci-dessous) de voir comment 'commit --amend' pourrait être scripté. Laissez-moi savoir si cela fonctionne. – VonC