Zwei Zweige master
und foo
zeigen auf denselben Root-Commit A. Der Arbeitsbaum hat nur eine Datei bar.txt
.Wie man einen Konflikt für dieses git cherry-pick verursacht?
$cat bar.txt
11111
22222
33333
44444
55555
Make B master
Commit, eine Linie in bar.txt
hinzufügen.
$cat bar.txt
11111
22222
33333
aaaaa
44444
55555
machen Dann C master
Commit, Löschen und Hinzufügen von aaaaa
bbbbb
an anderer Stelle in bar.txt
.
$cat bar.txt
11111
bbbbb
22222
33333
44444
55555
Run git format-patch -1 C
den Patch zu generieren C für Commit, seinen Namen unter der Annahme, 0001-bbbbb.patch
zu sein.
Jetzt Kasse foo
. git am 00001-bbbbb.patch
oder git apply 00001-bbbbb.patch
wird wie erwartet aufgrund von Konflikten fehlschlagen. git cherry-pick C
wird jedoch problemlos gelingen.
Von diesem question ich erfahren, dass git am
oder git apply
gelingen wird, auch mit dem Argument -3
oder --3way
in diesem Fall. Allerdings kann ich keine Config oder Argument über Three Way Merge für git cherry-pick
finden.
Frage:
Wie die Drei-Wege-Merge Sache für git cherry-pick
in diesem Fall deaktivieren, so dass die Rosinen herauspicken wird fehlschlagen?
Vielen Dank.
Für den Patch könnten Sie versuchen, die Anzahl der Kontextzeilen anzupassen. Das Gehör ist 3, also würden Sie Überschneidungen der Änderungen über die Kontextlinien erhalten. Das Ablegen auf 2 Kontextlinien würde dem 22222 \ n33333-Paar ermöglichen, einen klaren Kontext bereitzustellen. In der Zwischenzeit weiß der Cherry-Pick bereits viel mehr über Ihr Repo, so dass er vernünftige Entscheidungen über die Merge-Basis und die Kontextzeilen treffen kann (die verschiedenen Teile der Merge-Taktiken können ziemlich detailliert sein, um den Erfolg wenn möglich zu gewährleisten, und Berichte von Konflikten, wenn nicht) –
Ergänzend: Warum sollte der Kirschpflock ausfallen? (anstatt einen Patch, der richtig gelingt?) –
@PhilipOakley nach dem Lesen Ihrer Kommentare Ich fühle meine Erwartung ist irgendwie unvernünftig. Stimmt es, dass ein Patch nicht ohne 3-Weg-Merge angewendet werden kann, wenn sich der aktuelle Kontext von dem unterscheidet, mit dem der Patch verknüpft ist? Ich denke, ohne 3way Merge werden die meisten Cherry-Picks überhaupt nicht erfolgreich sein. – ElpieKay