Wie checke ich unsere Dateien in magit aus?

16

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 .

Tenpn
quelle
3
Dies beantwortet zwar nicht direkt Ihre Frage, aber es könnte nützlich sein. Bewegen Sie den Punkt in der Konfliktdatei hinein magit-statusund drücken Sie e, um das 3-Wege-Zusammenführen mit zu starten ediff. Eine andere Alternative besteht darin, dass Sie in einem Konfliktpuffer das smerge-modeHervorheben von Konflikten aktivieren und das interaktive Zusammenführen direkt in Ihrem Puffer durchführen können (nicht in ediff). Die Präfixschlüsselbindung für smerge-modeverwandte Befehle lautet C-c ^; Sie können drücken C-c ^ C-h, um alle Tastenzuordnungen anzuzeigen.
Tu Do
Ich finde auch nicht "unsere" oder "ihre" in der Dokumentation. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince
1
Sieht nach einer guten Frage zum Öffnen einer Funktionsanfrage aus?
Ehvince
1
Gute Idee @Ehvince, fertig: github.com/magit/magit/issues/1643
Tenpn
1
Oooh: In der nächsten Version von magit können Sie keinen Konflikt bearbeiten und auswählen, welche Version Sie behalten möchten. Klingt perfekt! github.com/magit/magit/issues/1643
tenpn

Antworten:

16

Ich bin mir nicht sicher, wann dieses Feature hinzugefügt wurde, aber es funktioniert perfekt:

  1. Führen Sie einen Zweig in einen anderen zusammen und stoßen Sie auf einen Konflikt
  2. Im Magit Puffer wird es Abschnitte für Merging master, und Unstaged changes, Staged changes. Die in Konflikt stehende Datei befindet sich inUnstaged changes
  3. Klicken Sie in der Zeile mit der in Konflikt stehenden Datei auf k, um die Änderungen (dh die in Konflikt stehenden Änderungen) zu verwerfen.
  4. Im Minipuffer sehen Sie die Antwort:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort

Hut8
quelle
5

Es gibt mehrere Lösungen:

  • Verwenden Sie Smerge-Ediff. In der Datei mit dem Konflikt führen Sie aus 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 Sie nund p, 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.
  • Verwenden Sie Ediff von Magit mit eder stabilen Version von Magit M-eoder M-m( magit-ediff-resolve) im nächsten Zweig von Magit, und dann werden Sie sich meist wie im ersten Fall wiederfinden
  • gibt es auch smerge-Modus, C-c ^ nund C-c ^ pwerden Ihnen helfen, aus einem Stück gehst zum vorherigen oder nächsten, können Sie sie bearbeiten oder verwenden Sie C-c ^ odie ‚andere‘ Version zu halten, C-c ^ mdie ‚meine‘ Version zu halten, C-c ^ bdie alten zu halten Version und C-c ^ asie alle zu halten.
  • Sie können magit-find-file verwenden, um eine Datei wie in einem Commit zu öffnen.
Rémi
quelle
Ich hatte nicht gesehen, dass Tu Do bereits die meiste Antwort hatte, die ich hier poste. Sory
Rémi
Vielen Dank für die umfassende Liste, aber ich denke, die Antwort auf "Gibt es eine prägnante Möglichkeit, die Ours- oder Thiers-Version zu erhalten?" Lautet "Nein". :(
Tenpn