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?
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.
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.
Ich mag insbesondere die Option "Follow renamed files", mit der Sie sehen können, ob eine Datei umbenannt oder verschoben wurde.
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.
@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/…
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.
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.
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!
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ß.
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?