3807 Stimmen

Sehen Sie sich die Änderungshistorie einer Datei unter Verwendung der Git-Versionierung an

Wie kann ich die Historie einer individuellen Datei mit vollständigen Details darüber, was geändert wurde, anzeigen?

git log -- [filename] zeigt mir die Commit-Historie einer Datei, aber wie kann ich den Dateiinhalt sehen, der geändert wurde?

6 Stimmen

Der obenstehende Link (veröffentlicht von Chris) ist nicht mehr gültig. Dieser Link funktioniert heute: git-scm.com/book/en/v2

2 Stimmen

@chris: Welchen Link meinst du? In einem mittlerweile gelöschten Kommentar?

2906voto

VolkA Punkte 31963

Dies ermöglicht es Git, die Patches für jeden Protokolleintrag zu generieren:

git log -p -- filename

Siehe git help log für weitere Optionen - es kann tatsächlich viele schöne Dinge tun. :)


Um nur die Änderungen für einen bestimmten Commit zu erhalten, verwenden Sie

git show HEAD

oder geben Sie eine andere Revision durch den Identifier an.


Um die Änderungen visuell zu durchsuchen:

gitk

10 Stimmen

Git show HEAD zeigt alle Dateien, weißt du, wie man eine einzelne Datei verfolgt (wie Richard gefragt hat)?

6 Stimmen

Sie verwenden: git show -- Dateiname, das wird die Unterschiede für diese Revision anzeigen, falls eine existiert.

4 Stimmen

--stat ist auch hilfreich. Du kannst es zusammen mit -p verwenden.

2690voto

Claudio Acciaresi Punkte 31193

Für eine grafische Ansicht verwenden Sie gitk:

gitk [Dateiname]

Um die Datei auch bei Dateiumbenennungen zu verfolgen:

gitk --follow [Dateiname]

36 Stimmen

Aber ich hätte lieber ein Werkzeug, das das obige mit 'git blame' kombiniert, so dass ich den Quellcode einer Datei durchsuchen kann, während er sich im Laufe der Zeit ändert...

2 Stimmen

GitWeb ist die Antwort darauf.

29 Stimmen

Leider folgt dies nicht der History der Datei über Umbenennungen hinaus.

1764voto

Dan Moulding Punkte 195982
git log --follow -p -- pfad-zur-datei

Dies zeigt die gesamte Historie der Datei an (einschließlich der Historie jenseits von Umbenennungen und mit Unterschieden für jede Änderung).

Anders gesagt, wenn die Datei namens bar einmal als foo bezeichnet wurde, wird git log -p bar (ohne die --follow Option) nur die Historie der Datei bis zu dem Zeitpunkt anzeigen, an dem sie umbenannt wurde - es wird nicht die Historie der Datei angezeigt, als sie als foo bekannt war. Durch Verwendung von git log --follow -p bar wird die gesamte Historie der Datei angezeigt, einschließlich aller Änderungen an der Datei, als sie als foo bekannt war. Die Option -p stellt sicher, dass für jede Änderung Unterschiede enthalten sind.

0 Stimmen

Ich finde es ein bisschen seltsam, aber du kannst die -CC Flagge nicht mit log --follow file verwenden, sonst wird es nichts finden (git 1.7.0.4).

23 Stimmen

--stat ist auch hilfreich. Sie können es zusammen mit -p verwenden.

34 Stimmen

Ich stimme zu, das ist die ECHTE Antwort. (1.) --follow stellt sicher, dass Sie Dateiumbenennungen sehen (2.) -p stellt sicher, dass Sie sehen, wie sich die Datei ändert (3.) es ist nur Befehlszeilen.

206voto

Falken Punkte 2368

tig ist ein terminalbasierter Viewer mit Farbunterstützung ähnlich wie der GUI-basierte gitk.

Schnellinstallation:

  • APT: apt-get install tig
  • Homebrew (OS X): $ brew install tig

Verwenden Sie es, um die Geschichte einer einzelnen Datei anzuzeigen: tig [Dateiname]

Oder durchsuchen Sie die detaillierte Repository-Historie über: tig

29 Stimmen

Ausgezeichnetes textbasiertes Tool, großartige Antwort. Ich war schockiert, als ich die Abhängigkeiten für gitk auf meinem Headless-Server installierte. Würde wieder hochwerten A+++

1 Stimmen

Sie können auch spezifische Dateien mit tig anzeigen, z.B. tig -- pfad/zur/spezifischen/datei

0 Stimmen

Um alle Änderungen für eine Datei anzuzeigen, einschließlich Umbenennungen, verwenden Sie tig --follow Dateiname. Vielen Dank an @falken für die Hilfe bei der Entdeckung eines so wunderbaren TUI-Tools.

131voto

farktronix Punkte 3711

git whatchanged -p filename ist in diesem Fall auch gleichwertig mit git log -p filename.

Sie können auch sehen, wann eine bestimmte Codezeile innerhalb einer Datei geändert wurde, indem Sie git blame filename verwenden. Dies druckt eine kurze Commit-ID, den Autor, Zeitstempel und den vollständigen Code für jede Zeile in der Datei aus. Dies ist sehr nützlich, nachdem Sie einen Fehler gefunden haben und wissen möchten, wann er eingeführt wurde (oder wessen Schuld es war).

16 Stimmen

"Neue Benutzer werden ermutigt, stattdessen git-log zu verwenden. (...) Der Befehl wird hauptsächlich aus historischen Gründen beibehalten;"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X