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?
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 commandereword
, 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 deedit
’ vous permet de sauter lesgit-commit
etgit-rebase
appels .
FWIW, git rebase interactive a maintenant une option "reword", ce qui rend cela beaucoup moins douloureux!
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