Editez le commit racine dans Git?

Il y a moyen de changer le message des commits suivants:

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)?

En supposant que vous ayez un arbre de travail propre, vous pouvez effectuer les opérations suivantes.

 # checkout the root commit git checkout  # amend the commit git commit --amend # rebase all the other commits in master onto the amended root git rebase --onto HEAD HEAD master 

A partir de la version Git 1.7.12 , vous pouvez maintenant utiliser

 git rebase -i --root 

Pour développer la réponse d’ecdpalma , vous pouvez maintenant utiliser l’option --root pour indiquer à rebase que vous souhaitez réécrire le commit racine / first:

 git rebase --interactive --root 

Ensuite, le commit racine sera affiché dans la liste TODO de rebase, et vous pourrez choisir de le modifier ou de le reformuler:

 reword   pick   ... 

Voici l’explication de --root partir des --root de --root de Git (accent mis sur le mien):

Rebase tous les commits accessibles depuis , au lieu de les limiter avec un . Cela vous permet de rebaser les commit (s) root sur une twig .

Une autre façon d’éviter ce problème si vous savez que vous allez rebasculer par-dessus le “premier” commit à l’avenir, est de faire un commit vide au début:

 git commit --allow-empty -m "Initial commit" 

et seulement alors commencez à faire des “vrais” commits, alors vous pouvez facilement vous rebobiner en plus de la manière standard en utilisant sth comme git rebase -i HEAD^

Vous pouvez utiliser git filter-branch :

 cd test git init touch initial git add -A git commit -m "Initial commit" touch a git add -A git commit -m "a" touch b git add -A git commit -m "b" git log --> 8e6b49e... b 945e92a... a 72fc158... Initial commit git filter-branch --msg-filter \ "sed \"s|^Initial commit|New initial commit|g\"" -- --all git log --> c5988ea... b e0331fd... a 51995f1... New initial commit