git-rebase
Manpage-Erwähnungen -X<option>
können an übergeben werden git-merge
. Wann / wie genau?
Ich mag durch Einspielen von Patches mit rebase rekursive Strategie und ihrer Option (anzuwenden , ohne Stöcke, anstatt ganze widersprüchliche Commits Skipping). Ich möchte nicht zusammenführen, ich möchte die Geschichte linear machen.
Ich habe es versucht:
git rebase -Xtheirs
und
git rebase -s 'recursive -Xtheirs'
aber git lehnt -X
in beiden fällen ab .
git rebase -Xtheirs
funktioniert in neueren Versionen, außer dass Baumkonflikte manuell gelöst werden müssen. Sie müssen git rebase -Xtheirs --continue
(mit -X
wiederholten) ausführen, nachdem Sie diese Konflikte gelöst haben.
git
git-rebase
Kornel
quelle
quelle
git rebase --interactive
. Siehe meine [aktualisierte Antwort unten ( stackoverflow.com/a/2945367/6309 ).Antworten:
Sie können dies mit Git v1.7.3 oder höheren Versionen verwenden.
(Dies ist eine Abkürzung für,
git rebase --strategy recursive --strategy-option theirs ${branch}
wie in der Dokumentation angegeben )Von Git v1.7.3 Versionshinweise:
git rebase --strategy <s>
lernte die Option--strategy-option
/-X
, um zusätzliche Optionen zu übergeben, die von der gewählten Zusammenführungsstrategie verstanden werden.NB: "Unsere" und "ihre" bedeuten das Gegenteil von dem, was sie während einer direkten Zusammenführung tun. Mit anderen Worten, "ihre" begünstigen die Commits für den aktuellen Zweig.
quelle
ours
undtheirs
scheint das Gegenteil von dem zu sein, was ich erwarte. Ich muss verwenden,theirs
um meine aktuelle Niederlassung zu bevorzugen.-X
impliziert das Vorhandensein von-s recursive
, so dass Sie jetzt nur verwenden könnengit rebase ${branch} -X theirs
. (Quelle git-scm.com/docs/git-rebase#git-rebase--Xltstrategy-optiongt )Dies gilt für Zusammenführungsstrategien, die über eigene Optionen verfügen
sollte funktionieren, obwohl dieser Patch erwähnt (Februar 2010):
Wenn es also immer noch nicht funktioniert, wird es gerade diskutiert!(unterstützt im letzten Git)
Update von Commit db2b3b820e2b28da268cc88adff076b396392dfe (Juli 2013, Git 1.8.4+),
Das bedeutet, dass
-X
Strategie und Strategie jetzt sowohl mit interaktiver als auch mit einfacher Rebase funktionieren.quelle
Wie iCrazy sagte, ist diese Funktion nur für Git 1.7.3 verfügbar. Für die armen Seelen (wie ich), die immer noch 1.7.1 verwenden, präsentiere ich eine Lösung, die ich selbst gemacht habe:
Git-Rebase-ihre
Es ist ein sehr ausgefeiltes (und damit langes) Skript, das für die Verwendung in der Produktion gedacht ist: UI-Optionen, verarbeitet mehrere Dateien, prüft, ob die Datei tatsächlich Konfliktmarkierungen enthält usw. Der "Kern" kann jedoch in zwei Zeilen zusammengefasst werden:
Und hier ist das vollständige Skript:
quelle
git rebase --strategy="recursive --theirs" master