Angenommen, ich habe einen Zusammenführungskonflikt. Ich sehe eine widersprüchliche Datei wie diese:
Unstaged changes:
Unmerged Foo/bar/wibble/plop/elbow.txt
Ich kann hier auf die Registerkarte klicken, um die Änderungen zu öffnen und möglicherweise zu einem Punkt in der Datei zu springen, um sie manuell zu korrigieren. Wenn es sich jedoch um eine große Datei mit vielen Konflikten handelt, kann dies zeitaufwändig sein.
Wie kann ich git über magit auffordern, die unsere oder ihre Version der Datei zu überprüfen, um den Konflikt zu lösen? Ich kann den Pfad kopieren und dann Shift-:
einen benutzerdefinierten git-Befehl eingeben, aber anscheinend muss dafür eine Tastenkombination vorhanden sein. Ich kann weder im Magit-Menü noch im ?
Popup etwas Offensichtliches erkennen .
magit-status
und drücken Siee
, um das 3-Wege-Zusammenführen mit zu startenediff
. Eine andere Alternative besteht darin, dass Sie in einem Konfliktpuffer dassmerge-mode
Hervorheben von Konflikten aktivieren und das interaktive Zusammenführen direkt in Ihrem Puffer durchführen können (nicht in ediff). Die Präfixschlüsselbindung fürsmerge-mode
verwandte Befehle lautetC-c ^
; Sie können drückenC-c ^ C-h
, um alle Tastenzuordnungen anzuzeigen.k
einen Konflikt bearbeiten und auswählen, welche Version Sie behalten möchten. Klingt perfekt! github.com/magit/magit/issues/1643Antworten:
Ich bin mir nicht sicher, wann dieses Feature hinzugefügt wurde, aber es funktioniert perfekt:
Merging master
, undUnstaged changes
,Staged changes
. Die in Konflikt stehende Datei befindet sich inUnstaged changes
k
, um die Änderungen (dh die in Konflikt stehenden Änderungen) zu verwerfen.For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort
quelle
Es gibt mehrere Lösungen:
M-x smerge-ediff
. Es versetzt Sie in den Ediff-Auflösungsmodus mit vier offenen Puffern: Ihrem, ihrem, Zusammenführen und dem Befehlspuffer. Im Befehlspuffer verwenden Sien
undp
, um zum nächsten oder vorherigen Block zu wechseln, "a" oder "b", um Änderungen vom ersten oder zweiten Puffer zu akzeptieren, oder Sie können zum Zusammenführungspuffer wechseln und ihn nach Ihren Wünschen bearbeiten.e
der stabilen Version von MagitM-e
oderM-m
(magit-ediff-resolve
) im nächsten Zweig von Magit, und dann werden Sie sich meist wie im ersten Fall wiederfindenC-c ^ n
undC-c ^ p
werden Ihnen helfen, aus einem Stück gehst zum vorherigen oder nächsten, können Sie sie bearbeiten oder verwenden SieC-c ^ o
die ‚andere‘ Version zu halten,C-c ^ m
die ‚meine‘ Version zu halten,C-c ^ b
die alten zu halten Version undC-c ^ a
sie alle zu halten.quelle