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?
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?
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
Git show HEAD zeigt alle Dateien, weißt du, wie man eine einzelne Datei verfolgt (wie Richard gefragt hat)?
Sie verwenden: git show -- Dateiname, das wird die Unterschiede für diese Revision anzeigen, falls eine existiert.
Für eine grafische Ansicht verwenden Sie gitk
:
gitk [Dateiname]
Um die Datei auch bei Dateiumbenennungen zu verfolgen:
gitk --follow [Dateiname]
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...
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.
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).
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.
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+++
Sie können auch spezifische Dateien mit tig anzeigen, z.B. tig -- pfad/zur/spezifischen/datei
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).
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.
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?