So vermeiden Sie git rebase töten merges?
Angesichts der folgenden git
Geschichte:
C-I origin/master
/
A-B-F-G-H master
\ /
D-E branch-b
Möchte ich Stellungswechsel meinem lokalen master
Filiale auf der Oberseite des origin/master
, aber ich möchte, um die Erhaltung der merge-commit G
. Als ich versuchte, Sie einfach tun, eine git rebase origin/master
während master
es gequetscht D..E
als G
und verpflichtet sich, dass mit der commit-Nachricht des E
, so die Geschichte, dass es einen merge verloren war. Gibt es eine Möglichkeit, die Erhaltung dieses verschmelzen, während Sie noch immer den Stellungswechsel? Für Klarheit, meine angestrebte Ergebnis ist:
A-B-C-I-F-G-H master
\ /
D-----E branch-b
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
--preserve-merges
zu Ihrem rebase-Befehl. Im Fall gab es Konfliktlösungen in Ihr verschmelzen, hinzufügen 'rekursive Ihre' Strategie als parameter als auch.-p
.recursive theirs
in diesem Fall helfen? Merge-commitG
hätten mit einer anderen Konfliktlösung Strategie, könnte es nicht?Dies ist nicht sehr schön, aber ich denke, dass Sie es tun können.
Stellungswechsel F auf dem origin/master als neuen master-Zweig:
Merge branch-b in Ihrem neuen Zweig:
Kirsche Holen die restlichen H-commit auf Ihren neuen master-Zweig:
Löschen Sie Ihre alten master-Zweig:
Leider werden Sie auch haben, um den Seriendruck wieder (hoffentlich dauert es nicht ohne manuelle Zusammenführen).
Ich nicht wirklich ausprobieren, so würde ich ein backup der repository ersten, aber ich bin ziemlich zuversichtlich, dass Sie bekommen, was Sie wollen. Außerdem schlage ich vor die öffnung gitk --all und erfrischend, den Baum mit "F5" nach jedem Befehl, damit man sehen kann was verändert.
Jemand anderes sollte noch posten, wenn Sie wissen, dass ein eleganter Weg, es zu tun.