Verlauf einer Datei in Magit anzeigen?

Antworten:

113

Seit Magit 2.1: magit-log-buffer-file( laut Kommentar unten)

Vor Magit 2.1: magit-file-logist das, wonach Sie suchen. Es zeigt Ihnen alle Commits für die Datei im aktuellen Puffer in der Standard-Magit-Protokollansicht.

Ragge
quelle
9
Seit Magit 2.1 magit-file-logwurde inmagit-log-buffer-file
Anton I. Sipos
9
magit-log-buffer-fileBeschränkt die Anzeige jedes Commits leider nicht nur auf diese Datei.
Robin Green
4
@CatalinHritcu Es funktioniert gut bei der Anzeige aller Commits, die diese Datei betreffen, aber es beschränkt die Anzeige jedes Commits nicht nur auf diese Datei.
Wilkystyle
5
Der bequemste Weg, den ich bisher gefunden habe, besteht darin, das Commit Ihrer Wahl aufzurufen magit-log-buffer-fileund dann magit-ediff-dwim(gebunden an die Verknüpfung "e" in Spacemacs) auszuführen. Dies zeigt ein Fenster mit zwei Fenstern mit hervorgehobenen Änderungen.
Juraj Martinka
1
Unklar , was @ Robin-grün und @wilkystyle beschreiben, aber vielleicht die Tastenanschläge l, -uund lhelfen nachmagit-log-buffer-file
dickmao
33

Öffnen Sie Ihren magit-statusPuffer durch Eingabe M-x magit-status(ich habe dies früher gebunden, C-. C-gweil es ständig verwendet wird. Heutzutage verwende ich Spacemacs, also ist es so <SPC> g s)

  1. Geben Sie ein l, um die Option zur Protokollanzeige zu erhalten
  2. Geben Sie ein --, um die Option "Auf Dateien beschränken" festzulegen (früher =f)
  3. Geben Sie den Dateipfad ein, für den Sie den Verlauf anzeigen möchten
  4. Geben Sie ein l, um das Protokoll des aktuellen Zweigs anzuzeigen

Wenn Sie Spacemacs verwenden, können Sie den Verlauf der aktuell besuchten Datei mithilfe von abrufen <SPC> g f h

Bryan Ash
quelle
1
Ich denke, Schritt 2 ist jetzt --( Magit 20200112.2023, Git 2.20.1, Emacs 26.1, gnu/linux)
Liam
1
Schön, funktioniert auch mit Dateien, die irgendwann gelöscht wurden.
Günter Zöchbauer
11

*magit: <project>*Verwenden lSie in Ihrem Puffer , um in den Protokollierungsmodus zu wechseln, und drücken Sie f, um zur Eingabe eines Dateinamens aufgefordert zu werden.

Bart Vandendriessche
quelle
3

Ich kenne keinen Weg. Ich benutze einfach, M-x vc-print-logwas das gleiche Kunststück zu erreichen scheint. Es ist jedoch kein magit-integrierter Weg.

sp3ctum
quelle
2

Wenn magit ( Benutzerhandbuch ) diese Funktion nicht hat, können Sie sich einen anderen Emacs-Modus ansehen und Ihre eigene git-log-fileFunktion hinzufügen :

(defun git-log-file ()
  "Display a log of changes to the marked file(s)."
  (interactive)
  (let* ((files (git-marked-files))
         (buffer (apply #'git-run-command-buffer "*git-log*" "git-rev-list" \
"--pretty" "HEAD" "--" (git-get-filenames files))))  (with-current-buffer buffer
      ; (git-log-mode)  FIXME: implement log mode
      (goto-char (point-min))
      (setq buffer-read-only t))
    (display-buffer buffer)))
VonC
quelle
Oder benutze einfachC-x v l
phils
Ich habe folgende Nachricht:Symbol’s function definition is void: git-marked-files
Alper
1
@alp 7 Jahre später würde dieses Problem in seiner eigenen Frage mit der genauen Version des Betriebssystems, der Sonnenfinsternis und des magischen Plugins besser dargestellt.
VonC