Changer l’ancien message de validation sur Git

J’essayais d’éditer un ancien message de validation comme expliqué ici .

La chose est que maintenant, quand j’essaye de lancer rebase -i HEAD~5 il dit que le interactive rebase already started .

Alors j’essaie: git rebase --continue mais a cette erreur:

 error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba fatal: Cannot lock the ref 'refs/heads/master'. 

Des idées?

Ça dit:

Lorsque vous enregistrez et quittez l’éditeur, il vous ramènera à cette dernière validation dans cette liste et vous déposera sur la ligne de commande avec le message suivant:

 $ git rebase -i HEAD~3 Stopped at 7482e0d... updated the gemspec to hopefully work better You can amend the commit now, with 

Cela ne signifie pas:

tapez à nouveau git rebase -i HEAD~3

Essayez de ne pas taper git rebase -i HEAD~3 lorsque vous quittez l’éditeur, et cela devrait fonctionner correctement.
(sinon, dans votre situation particulière, un git rebase -i --abort peut être nécessaire pour tout réinitialiser et vous permettre de réessayer)


Comme Dave Vogt le mentionne dans les commentaires, git rebase --continue pour aller à la tâche suivante dans le processus de rebasage, après avoir modifié le premier commit .

Aussi, Gregg Lind mentionne dans sa réponse la commande git rebase de git rebase :

En remplaçant la commande “pick” par la commande “edit”, vous pouvez indiquer à git rebase de s’arrêter après avoir appliqué cette validation, afin de pouvoir modifier les fichiers et / ou le message de validation, modifier le commit et continuer à rebaser.

Si vous souhaitez simplement éditer le message de validation pour un commit, remplacez la commande ” pick ” par la commande ” reword , depuis Git1.6.6 (janvier 2010) .

Cela fait la même chose que ” edit ” lors d’un rebase interactif, sauf qu’il vous permet uniquement d’éditer le message de validation sans renvoyer le contrôle au shell . Ceci est extrêmement utile.
Actuellement, si vous souhaitez nettoyer vos messages de validation, vous devez:

 $ git rebase -i next 

Ensuite, réglez tous les commits sur «modifier». Puis sur chacun:

 # Change the message in your editor. $ git commit --amend $ git rebase --continue 

L’utilisation de ‘ reword ‘ au lieu de ‘ edit ‘ vous permet d’ignorer les appels git-commit et git-rebase .

FWIW, git rebase interactive a maintenant une option “reword”, ce qui rend cela beaucoup moins pénible!

Vous pouvez le faire comme suit: @gregg dit utiliser le mot reword

 git rebase -i HEAD~n 

Ici n est la liste des n derniers commits.

Par exemple si vous utilisez git rebase -i HEAD~4

 pick e459d80 Do xyz pick 0459045 Do something pick 90fdeab Do blah blah blah pick 90fdeab Do pqr 

Maintenant, remplacez le mot pick par reword pour commit que vous souhaitez modifier le message.

  pick e459d80 Do xyz reword 0459045 Do something reword 90fdeab Do blah blah blah pick 90fdeab Do pqr 

Maintenant fermez et enregistrez ceci, vous aurez la chance de modifier le message de validation pour lequel vous avez utilisé reword dans les fenêtres suivantes.

Vous pouvez également consulter le document officiel ici