Il existe des moyens de modifier le message à partir de validations ultérieures:
git commit --amend # for the most recent commit
git rebase --interactive master~2 # but requires *parent*
Comment pouvez-vous changer le message de validation du tout premier commit (qui n'a pas de parent)?
git filter-branch --msg-filter
Réponses:
En supposant que vous disposez d'un arbre de travail propre, vous pouvez effectuer les opérations suivantes.
la source
git rebase --onto HEAD <sha1-of-root> master
.git rebase
.git rebase
applique des validations dans <branch> (master
) qui ne sont pas dans <upstream>;HEAD
n'est pas dedansmaster
, donc votre version essaie de tout appliquermaster
.git rebase --onto HEAD <sha1-of-root>
maître, où<sha1-of-root>
est le même utiliségit checkout <sha1-of-root>
. Sinon, vous en aurez 2first commit
.HEAD
garantit que toutes les validations sont prises en compte et que nous pouvons utiliser la version à deux paramètres de rebase pour revenir sur master. Veuillez noter que cette réponse est antérieure à l'existence de l'--root
option de rebase.Depuis Git version 1.7.12 , vous pouvez maintenant utiliser
Documentation
la source
Pour développer la réponse d'ecdpalma , vous pouvez maintenant utiliser l'
--root
option pour indiquerrebase
que vous souhaitez réécrire la racine / le premier commit:Ensuite, le commit racine apparaîtra dans la liste de rebase TODO, et vous pouvez choisir de le modifier ou de le reformuler:
Telle est l'explication de
--root
de la documentation de rebasage Git (Souligné par l'auteur ):la source
Juste pour fournir une alternative aux réponses les mieux notées:
Si vous créez un référentiel et que vous savez d'avance que vous rebaserez sur son "premier" vrai commit à l'avenir, vous pouvez éviter complètement ce problème en faisant un commit explicite vide au début:
et alors seulement commencer à faire des "vrais" commits. Ensuite, vous pouvez facilement rebaser au-dessus de ce commit de la manière standard, par exemple
git rebase -i HEAD^
la source
.gitattributes
fichier au lieu de faire un commit vide.Vous pouvez utiliser
git filter-branch
:la source
-- --all
option est en effet la clé dans ce cas pour pouvoir également gérer le commit racine.