Meine git Zweige sehen wie folgt aus:Wie rebase über bereits indexiert Zweig
master-*-*-*-*-*-*-implement_x
\ \-*-further_foo_fixes_that_depend_on_x
\ \-*-*-further_bar_fixes_that_depend_on_x
\
\-implement_x_rebased
es auf diese Weise beendet, weil ich meine Zweig dachte implement_x
stromaufwärts zusammengeführt werden würde, wie es ist, aber ich wurde gebeten, es zu zerquetschen zu einem einzigen Commit, also implement_x_rebased
. Allerdings habe ich bereits mehrere Branchen zur weiteren Fixierung und Entwicklung angefangen, die auf meine Arbeit angewiesen sind, während ich darauf warte, dass die implement_x
zusammengeführt wird.
Jetzt möchte ich die weitere Arbeit an implement_x_rebased
umbasen. Ich dachte, das war ein No-Op, da implement_x
und implement_x_rebased
im exakt gleichen Zustand waren - es würde keine Zusammenführungskonflikte geben, nur die Änderungen zwischen implement_x
und further_foo_fixes_that_depend_on_x
usw. auf implement_x_rebased
anwenden. Es scheint jedoch, dass Git nicht so schlau ist, und es versucht, den ganzen Weg von der Basis neu zu erstellen - was zu unnötigen Merge-Konflikten führt.
Ich dachte, dass der einfache Ausweg rebase & die weiteren Korrekturen auf implement_x
zerquetschen und sie dann beiseite schaffen, und wenden Sie die stashes zu implement_x_rebased
, aber ich bin neugierig, ob es eine richtige Art und Weise ist git erkennen, dass implement_x
und implement_x_rebased
sind eigentlich in dem gleichen Zustand?
Ich weiß nicht, perfekte Antwort für diese Frage, aber Cherry-Pick ist auch eine der Optionen. – shirakia
Ah. Cherry Picking ist definitiv einfacher und besser als das manuelle Auftragen von Diffs. Ich warte immer noch auf Antworten, die meine Frage direkt beantworten, aber wenn es für mich keine gibt, werde ich das akzeptieren, wenn du es postest. – GolDDranks
Bitte überprüfen Sie 'git rev-parse implement_x^{tree} implementieren_x_rebased^{tree}, um zu sehen, ob die beiden Commits wirklich den gleichen Inhalt haben. – jthill