Modifier l'ancien message de commit sur Git

j'essayais d'éditer un vieux message de propagation comme expliqué ici .

la chose est que maintenant, quand j'essaie de courir rebase -i HEAD~5 il dit interactive rebase already started .

alors j'essaie: git rebase --continue mais j'ai eu cette erreur:

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

des idées?

102
demandé sur Pablo Fernandez 2009-12-11 01:16:13

3 réponses

Il dit:

lorsque vous sauvegardez et quittez l'éditeur, il vous renverra à cette dernière propagation 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:

de type nouveau git rebase -i HEAD~3

Tenter "de 1519300920" pas en tapant git rebase -i HEAD~3 à la sortie de l'éditeur,et ça devrait marcher.

(sinon, dans votre situation particulière, un git rebase -i --abort pourrait être nécessaire pour Tout réinitialiser et vous permettre d'essayer à nouveau)


As Dave Vogt mentions dans les commentaires, git rebase --continue est pour aller à la tâche suivante dans le processus de rebasement, après que vous avez modifié le premier commit .

aussi, Gregg Lind mentions dans sa réponse le reword commande de git rebase :

en remplaçant la commande" pick "par la commande" edit", vous pouvez dire git rebase d'arrêter après avoir appliqué cette propagation, de sorte que vous pouvez éditer les fichiers et/ou le message de propagation, modifier la propagation, et continuer à rebaser.

si vous voulez simplement éditer le message de propagation pour une propagation, remplacez la commande pick par la commande reword , depuis Git1.6.6 (January 2010) .

Il fait la même chose " "1519120920 est au cours d'un rebase interactif, à l'exception de il permet de modifier le message de commit, sans avoir à retourner le contrôle de la coquille . C'est extrêmement utile.

Actuellement, si vous voulez nettoyer vos messages de validation, vous devez:

$ git rebase -i next

définit alors toutes les propagations à ‘edit’. Puis sur chacun d'eux:

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

en utilisant reword ‘ au lieu de edit ’ vous permet de sauter les git-commit et git-rebase appels .

97
répondu VonC 2017-05-23 11:47:07

FWIW, git rebase interactive a maintenant une option "reword", ce qui rend cela beaucoup moins douloureux!

45
répondu Gregg Lind 2010-07-26 15:42:57

Vous pouvez le faire de la manière suivante @gregg a dit d'utiliser le mot reformuler

git rebase -i HEAD~n

Ici, n est la liste des derniers n engage.

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

remplacer maintenant le mot pick par reword pour commit vous voulez éditer le message.

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

maintenant fermez et sauvegardez ceci vous obtiendrez possibilité de modifier le message de propagation pour lequel vous avez utilisé dans les fenêtres suivantes.

, Vous pouvez consulter le document officiel ici ainsi

20
répondu Punit Vara 2017-08-02 05:06:01