Wie kann ich einen Puffer gegen eine Revision bearbeiten?

8

Ich möchte ediff ausführen, um meine aktuelle Version einer Datei (in git) mit einer Version der Datei in einem anderen Zweig zu vergleichen.

Ich laufe M-x ediff-revisionaus einem offenen Puffer für die betreffende Datei. Ich beantworte die beiden Fragen:

  • Revisionen für Datei vergleichen: Ich habe diese Antwort leer (der Standard ist der aktuelle Puffer, der korrekt ist).
  • Zu vergleichende Revision 1: Ich akzeptiere die Standardeinstellung erneut ("neueste Version der Standarddatei").
  • Revision 2 zum Vergleichen: Ich gebe einen Git-Filialnamen ein

Dies funktioniert hervorragend, um die Unterschiede zwischen den beiden Dateien anzuzeigen. Ich möchte jedoch in der Lage sein, die aktuelle Version zu bearbeiten (dh durch Drücken aoder bin Ediff, um Diff-Blöcke zu kopieren oder zu entfernen), und der Puffer "Aktuelle Version" ist ein schreibgeschützter Puffer mit einem hergestellten Namen ( file.~git-branch~). Ich möchte, dass der Puffer "aktuelle Version" der Lese- / Schreibpuffer ist, mit dem ich begonnen habe, und kein schreibgeschützter Puffer in der Version des aktuellen Zweigs.

PT
quelle

Antworten:

7

Emacs tut, was Sie ihm gesagt haben, anstatt was Sie meinten. ediff-revisionbittet um drei Informationen:

  1. Die zu bearbeitende Datei - Standard: Die Datei , die der aktuelle Puffer besucht.
  2. Die alte Revision - Standard: die neueste Revision.
  3. Die neue Revision - Standard: der aktuelle Status.

In Schritt 1 wählen Sie die Datei aus und teilen Emacs nicht mit, dass Sie die Datei so verwenden möchten, wie sie sich im Puffer befindet. Die Standardeinstellung für Schritt 2 ist die neueste Version, nicht die aktuelle Arbeitskopie. Die Standardeinstellung für Schritt 3 ist der Pufferinhalt. Dies ist die Arbeitskopie, wenn der Puffer nicht geändert wird. Mit dem, was Sie getan haben, vergleichen Sie das, was Sie ausgecheckt haben (normalerweise die neueste Version des aktuellen Zweigs), mit einem anderen Zweig, nicht mit der Arbeitskopie mit einem anderen Zweig.

Sie müssen den Zweignamen als erste Revision angeben (Schritt 2) und die dritte Frage leer lassen, um anzugeben, dass Sie den Pufferstatus verwenden möchten. Sie können nur den aktuellen Pufferstatus für Revision 2 auswählen, nicht für Revision 1 (dies ist integriert ediff-vc-internal).

Gilles 'SO - hör auf böse zu sein'
quelle
7

Bei Verwendung von Magit :

  1. Verwenden Sie l -al ldiese Option , um die Revisionen aller Zweige in Ihrem Verlauf anzuzeigen
  2. Gehen Sie zu der Zeile mit der Revision, mit der Sie Ihren aktuellen Pufferinhalt vergleichen möchten.
  3. Geben dSie ein und Sie werden gefragt, mit welcher Revision der aktuelle Arbeitsbaum verglichen werden soll (die Standardeinstellung ist die Revision am Punkt). Bestätigen.
  4. Sie erhalten eine unterschiedliche Übersicht über Änderungen aller Dateidifferenzen zwischen dem aktuellen Arbeitsbaum und der Revision. Setzen Sie einen Punkt auf die Datei, an der Sie interessiert sind, und eklicken Sie, um eine Ediff-Sitzung darauf aufzurufen.

Magit bietet eine Reihe von Optionen zum Anzeigen der Revisionen (Schritt 1). Sie können wählen Wenn Sie eine sehr komplexe Zweigstruktur haben, möchten Sie möglicherweise etwas mehr Filter verwenden, um die gewünschte Revision zu finden.

dfeich
quelle
Großartig! Genau das habe ich gesucht. Nur eine Sache ... Was meinst du damit -al? Normalerweise mache ich das l loder l aauf Magit-Status-Puffer.
Neffe
Dies war für ein älteres Layout der Benutzeroberfläche von magit. In den aktuellen Versionen können Sie verwenden l a. Das Layout von Magit hat sich in den letzten 3 Jahren einige Male geändert.
dfeich