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?

123voto

Mark Fox Punkte 8397

Sourcetree-Benutzer

Wenn Sie Sourcetree verwenden, um Ihr Repository zu visualisieren (es ist kostenlos und ziemlich gut), können Sie mit der rechten Maustaste auf eine Datei klicken und Log Selected auswählen.

Geben Sie hier eine Bildbeschreibung ein

Die Anzeige (unten) ist viel benutzerfreundlicher als gitk und die meisten anderen aufgeführten Optionen. Leider gibt es (derzeit) keinen einfachen Weg, um diese Ansicht von der Befehlszeile aus zu starten - der CLI von Sourcetree öffnet derzeit nur Repositories.

Geben Sie hier eine Bildbeschreibung ein

1 Stimmen

Ich mag insbesondere die Option "Follow renamed files", mit der Sie sehen können, ob eine Datei umbenannt oder verschoben wurde.

0 Stimmen

Aber es sei denn, ich irre mich (bitte lassen Sie es mich wissen!), kann man nur zwei Versionen auf einmal im GUI vergleichen? Gibt es Clients, die eine elegante Benutzeroberfläche zum Vergleichen mehrerer verschiedener Versionen auf einmal haben? Möglicherweise mit einer Zoom-Out-Ansicht wie in Sublime Text? Das wäre wirklich nützlich, denke ich.

0 Stimmen

@SamLewallen Wenn ich es richtig verstehe, möchtest du drei verschiedene Commits vergleichen? Dies klingt ähnlich wie ein Drei-Wege-Merge (meins, deins, Basis) - normalerweise wird diese Strategie zur Lösung von Merge-Konflikten verwendet, nicht unbedingt zum Vergleich von drei beliebigen Commits. Es gibt viele Tools, die Drei-Wege-Merges unterstützen stackoverflow.com/questions/10998728/… aber der Trick besteht darin, diesen Tools die spezifischen Revisionen zuzuführen gitready.com/intermediate/2009/02/27/…

75voto

yllohy Punkte 747

Um anzuzeigen, welche Überarbeitung und welcher Autor jede Zeile einer Datei zuletzt geändert haben:

git blame dateiname

oder wenn du die leistungsstarke blame GUI verwenden möchtest:

git gui blame dateiname

1 Stimmen

Die Schuld-Befehle zeigen keine Informationen über gelöschten Code an. Wenn Sie sich jeden Commit über gitk oder tig ansehen, wird das angezeigt.

67voto

John Lawrence Aspden Punkte 16503

Zusammenfassung weiterer Antworten nach deren Durchsicht und ein wenig Spielen:

Der übliche Befehl in der Befehlszeile wäre

git log --follow --all -p dir/file.c

Aber Sie können auch entweder gitk (GUI) oder tig (Text-UI) verwenden, um viel menschenlesbarere Möglichkeiten zum Anzeigen zu erhalten.

gitk --follow --all -p dir/file.c

tig --follow --all -p dir/file.c

Unter Debian/Ubuntu ist der Installationsbefehl für diese schönen Tools wie erwartet:

sudo apt-get install gitk tig

Und ich verwende derzeit:

alias gdf='gitk --follow --all -p'

so dass ich einfach gdf dir eingeben kann, um eine fokussierte Historie von allem im Unterverzeichnis dir zu erhalten.

2 Stimmen

Ich denke, das ist eine großartige Antwort. Vielleicht wirst du nicht so gut bewertet, weil du auf andere Weise antwortest (meiner Meinung nach besser), um die Änderungen zu sehen, z.B. über gitk und tig zusätzlich zu git.

0 Stimmen

Nur um die Antwort zu ergänzen. Suchen Sie den Pfad (im Git-Raum, bis zu dem er noch im Repository vorhanden ist). Verwenden Sie dann den oben genannten Befehl "git log --follow --all -p ". Es könnte der Fall sein, dass die Datei/der Ordner im Laufe der Zeit entfernt wurde, daher suchen Sie den maximalen Pfad, der immer noch vorhanden ist, und versuchen Sie, seine Geschichte abzurufen. Funktioniert!

3 Stimmen

--alle gilt für alle Zweige, der Rest wird in @Dans Antwort erklärt

31voto

foxiris Punkte 2453

Sie können Visual Studio Code mit GitLens verwenden. Es ist ein sehr leistungsfähiges Tool.

Nach der Installation von GitLens gehen Sie zum GitLens-Tab, wählen Sie DATEIVERLAUF und Sie können ihn durchsuchen.

Geben Sie hier die Bildbeschreibung ein

0 Stimmen

Oder donjayamanne.githistory

29voto

Palesz Punkte 2094

Fügen Sie diesem Alias Ihre .gitconfig hinzu:

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

Und verwenden Sie den Befehl wie folgt:

> git lg
> git lg -- Dateiname

Die Ausgabe wird fast genau wie die gitk-Ausgabe aussehen. Viel Spaß.

0 Stimmen

Nachdem ich diesen lg Shortcut ausgeführt hatte, sagte ich (und ich zitiere) "Schön!". Beachte jedoch, dass das "\n" nach "--graph" ein Fehler ist.

3 Stimmen

Auch möglich ist git lg -p Dateiname - es liefert eine schöne Differenz der gesuchten Datei.

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