Hier ist das, was die rerere-train.sh Skript, das ich in meinem Kommentar erwähnt habe, tut dies - im Wesentlichen führt es die Zusammenführung erneut durch, verwendet Ihre Auflösung und lässt rerere es einfach sehen. Wenn Sie möchten, können Sie dies auch manuell für Ihre einzelne Übertragung tun:
git checkout <parent of merge commit>
git merge <merged commit> # if this goes cleanly, we're done
git rerere # done automatically if rerere.enabled is true
git checkout <merge commit> -- . # check out the files from the result of the merge
git rerere # done automatically if rerere.enabled is true
git reset --hard # wipe away the merge
# and you'd want to follow with git checkout <branch> to return to where you were
Sie können aber auch einfach die rerere.enabled
auf true, und führen Sie diese Schritte ohne die direkten Aufrufe von git rerere
-und Sie wären für die Zukunft gerüstet, da rerere automatisch ausgeführt wird, wenn Sie Konflikte lösen. Dies ist mein Job -Es ist fantastisch.
Wenn Sie das Skript direkt ausführen wollen, sollten Sie es mit Argumenten wie rerere-train.sh ^<commit before the merge> <current branch>
. (Die ^commit
Notation bedeutet "nicht über diesen Punkt hinaus in die Geschichte gehen", also wird es sich nicht die Mühe machen, dies für alle die Merge-Commits in Ihrem Repo).
Wie auch immer Sie rerere dazu bringen, seine Arbeit zu tun, Sie sollten am Ende die gewünschte Auflösung aufgezeichnet haben. Das heißt, Sie können Ihre rebase -i
und wenn Sie auf den Konflikt stoßen, wird rerere die aufgezeichnete Lösung wiederverwenden (REcorded REsolution). Nur als Vorwarnung: Die Dateien bleiben im Index als konfliktbehaftet markiert, so dass Sie sie überprüfen und sich vergewissern können, dass das, was er getan hat, sinnvoll ist. Sobald Sie das getan haben, verwenden Sie git add
Sie können sie einchecken, als ob Sie die Konflikte selbst gelöst hätten, und wie gewohnt weitermachen!
En git-rerere
Manpage enthält eine sehr schöne, ausführliche Beschreibung der normalen Verwendung von rerere, bei der rerere nie tatsächlich aufgerufen werden muss - das geschieht alles automatisch. Und eine Anmerkung, die nicht hervorgehoben wird: Es basiert alles auf Konflikt-Hunks, so dass es eine Auflösung wiederverwenden kann, selbst wenn der Konflikt an einer völlig anderen Stelle endet, solange es immer noch derselbe textuelle Konflikt ist.