Wie kann ich eine bestimmte Revision einer Datei mit Magit öffnen?

43

Ist es möglich, eine bestimmte Revision einer Datei in Emacs mit Magit zu öffnen, ohne den aktuellen Zweig zu ändern?

Ich habe einige lokale Änderungen an einer Revision vorgenommen, bei der die geänderten Funktionen durch Funktionen in einer anderen Datei ersetzt wurden. Ich möchte die alte Version meiner Änderungen in einem separaten Puffer öffnen, damit ich die Änderungen nebeneinander vergleichen kann.

Meine aktuelle Hacky- Lösung bestand darin, in Emacs zu starten git show <branch pre-rebase>:file > old_fileund dann zu öffnen old_file.

David Holm
quelle
1
github.com/pidu/git-timemachine kann eine Datei zwischen den einzelnen Versionen vorübergehend auf einen Blick anzeigen.
Kuanyui
1
@kuanyui Ich verwende, git-timemachineaber da mein Code neu basiert wurde, glaube ich nicht, dass es funktionieren wird, da der alte Code nicht Teil der aktuellen Filialgeschichte ist.
David Holm

Antworten:

56

Sie können mit einer Datei für eine bestimmte Revision anzuzeigen M-x magit-find-file RET <filename> RET.

Oder Sie können das Diff zum Festschreiben zuerst anzeigen, indem Sie darauf drücken RET, zu der Datei im Diff navigieren und dann RETerneut drücken .

Kyle Meyer
quelle
8
Das funktioniert bei mir; Ich mache Folgendes: M-x magit-log-buffer-fileVerschieben Sie von der aktuellen Version der Datei aus die Zeile in die gewünschte Festschreibung M-x magit-find-file. Dann ist der Standardwert das Festschreiben. Ich muss den Pfad zu der Datei angeben, da diese nicht aus dem Protokollpuffer abgerufen wird.
Liam
@tarsius, Irgendwie magit-find-file, aber wo muss ich nur die Revision für die aktuelle Pufferdatei auswählen. Gibt es das schon?
Ergosys
Ja, verwenden Sie sich magit-find-fileselbst aus einem Dateibesuchspuffer und geben Sie dann RETbei der zweiten Eingabeaufforderung ein (die richtige Datei wird standardmäßig angeboten).
Tarsius
Danke für die Infos und all deine Arbeit an Magit. Es war nicht allzu schwierig, eine Funktion zu hacken, die diesen lästigen zusätzlichen Tastenanschlag überspringt, also bin ich glücklich, bis der nächste Juckreiz auftritt.
Ergosys
29

Es ist möglich, mit einfachem VC (eingebaut in Emacs) zu arbeiten, ohne Magit. Geben C-x v ~Sie die gewünschte Version ein. Es versteht Tags und SHA1-Hashes sowie die üblichen ~1etc-Suffixe.

Legoscia
quelle
Dies ist keine Antwort auf eine Magit-Frage. Würden Sie eine C-Antwort auf eine Ruby-Frage posten?
Bryan Ash
4
@BryanAsh ja, wenn die Lösung in C so viel einfacher ist.
Markus Strauss