Comment est-ce que je rebase le premier commit?

129

J'avais l'habitude git initde créer un nouveau repo, puis de faire trois commits. Maintenant, je veux rebaser pour revenir en arrière et modifier mon premier commit, mais si je le fais, git rebase -i HEAD~3il se plaint! Si j'essaye la même chose avec HEAD~2alors ça marche un peu mais ne me laisse réorganiser que les deux derniers commits.

Comment faire référence au «commit avant qu'il y ait des commits» ou revenir en arrière et insérer un commit vide?

lxs
la source
4
Possible duplication de Edit the root commit dans Git?
Liam

Réponses:

217

Le moyen le plus simple, avec un git assez récent (cela existe depuis longtemps maintenant, vous devriez donc l'avoir):

git rebase -i --root

L'autre moyen simple, comme twalberg l'a noté dans un commentaire , est d'utiliser git checkout --orphanpour configurer un nouveau commit root, sur lequel vous pouvez copier les anciens commits par-dessus. (C'est ce qui rebase -i --rootfinit par faire en interne de toute façon.)

Torek
la source
En utilisant git rebase -i --rootj'obtiens l'erreur error: cannot 'fixup' without a previous commiten essayant d'écraser le deuxième commit (je veux juste le premier)
mikemaccana
Qu'est-ce que vous éditez exactement dans la feuille d'instructions? Vous devriez avoir une liste de commits, avec le plus ancien en haut, et une commande pickpour chacun. Remplacez le second pick par squashou fixup, écrivez la feuille d'instructions, quittez votre éditeur et Git devrait faire le travail.
torek le