Das SVN-Protokoll verfügt über einen "-v" -Modus, der Dateinamen von Dateien ausgibt, die bei jedem Commit geändert wurden, wie folgt:
jes5199 $ svn log -v -------------------------------------------------- ---------------------- r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Mi, 03. Januar 2007) | 1 Zeile Geänderte Pfade: A / AUTOREN A / KOPIEREN A / ChangeLog A / EVOLUTION A / INSTALLIEREN A / MacOSX
Gibt es eine schnelle Möglichkeit, eine Liste der geänderten Dateien in jedem Commit in Git abzurufen?
git log
nicht einfach ein-v
Switch unterstützt , wie ihn so viele erwarten / wollen? </ griff>Antworten:
Für vollständige Pfadnamen geänderter Dateien:
Für vollständige Pfadnamen und den Status geänderter Dateien:
Für abgekürzte Pfadnamen und einen Diffstat geänderter Dateien:
Es gibt viel mehr Möglichkeiten, lesen Sie die Dokumente .
quelle
git log --numstat
. Siehegit help log
für weitere Optionen.git log --name-only --oneline
ist auch ziemlich schick - eine farbige Zeile für das Commit und eine Datei pro Zeile. stackoverflow.com/a/14227496/1995714git log --name-status --find-renames
umbenannte Dateien anstelle von Hinzufügen + Löschen anzeigen .--stat
lange Pfade abgekürzt werden. Die Breite ist konfigurierbar, aber umhüllte Histogramme sind schwerer zu lesen. Andere Formate--numstat
drucken wie immer vollständige Pfade.--numstat
befindet sich in Zeile 946 dieser Manpage ab Git 2.22.00. Das sind viel mehr Optionen, als die meisten Menschen brauchen.HINWEIS: ist veraltet, verwenden Sie stattdessen
git whatchanged
git log
Mit dem Befehl können
git whatchanged --stat
Sie eine Liste der Dateien abrufen, die sich bei jedem Commit geändert haben (zusammen mit der Commit-Nachricht).Verweise
quelle
git show
ist auch ein großartiger Befehl.Es ist
svn diff
ein bisschen wie , aber Sie können es als Commit-Guid übergeben und diesen Unterschied sehen.quelle
Wenn Sie die Dateinamen nur ohne den Rest der Festschreibungsnachricht erhalten möchten, können Sie Folgendes verwenden:
Dies kann dann erweitert werden, um die verschiedenen Optionen zu verwenden, die den Dateinamen enthalten:
Bei dieser Methode ist zu beachten, dass die Ausgabe einige Leerzeilen enthält, die ignoriert werden müssen. Die Verwendung dieser Funktion kann hilfreich sein, wenn Sie die Dateien anzeigen möchten, die in einem lokalen Zweig geändert wurden, aber noch nicht in einen Remote-Zweig verschoben wurden, und es gibt keine Garantie dafür, dass die neuesten Dateien von der Remote bereits abgerufen wurden. Zum Beispiel ::
Zeigt alle Dateien an, die im lokalen Zweig geändert, aber noch nicht mit dem Hauptzweig auf der Fernbedienung zusammengeführt wurden.
quelle
git log --stat --pretty="format:" $branchName
. So zum Beispielgit log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD)
. Während ich dabei bin, ist hier die genaue Beschwörung, die für meinen Zweck relevant war:git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
Ich benutze dies täglich, um den Verlauf mit Dateien anzuzeigen, die sich geändert haben:
Um es kurz zu machen, fügen Sie einen Alias hinzu,
.gitconfig
indem Sie Folgendes tun:quelle
Ich benutze das:
Hiermit wird nur eine Liste der Dateien und deren Status ausgegeben (hinzugefügt, geändert, gelöscht):
quelle
git diff --stat HEAD^!
Zeigt geänderte Dateien und hinzugefügte / entfernte Zeilenzahlen für das letzte Commit (HEAD
) an.Es scheint mir, dass es keinen einzigen Befehl gibt, um eine präzise Ausgabe zu erhalten, die nur aus Dateinamen und hinzugefügten und entfernten Zeilenzahlen für mehrere Commits gleichzeitig besteht. Deshalb habe ich mein eigenes Bash-Skript dafür erstellt:
ZB zu nennen.
./changed_files 99
um die Änderungen in einer übersichtlichen Form vonHEAD
bis zu erhaltenHEAD~99
. Kann z. zuless
.quelle
git diff --stat HEAD..master
den Unterschied zwischen HEAD und Master aufzeigen, oder gab es diesen nicht, als Sie 2012 Ihre Antwort veröffentlicht haben?HEAD
undmaster
. Das sind zwei verschiedene Dinge.Ich finde, dass das Folgende die ideale Anzeige ist, um die pro Commit geänderten Dateien in einem übersichtlichen Format aufzulisten:
quelle
Eine Zusammenfassung der Antworten mit Beispielausgabe
Hierbei wird ein lokales Repository mit fünf einfachen Commits verwendet.
Dank an @ CB-Bailey @ Peter-Suwara @Gaurav @ Omer-Dagan @xsor @Hazok @nrz @ptc
quelle
Ein weiterer nützlicher Befehl wäre,
git diff-tree <hash>
wo Hash auch ein Hash-Bereich sein kann (bezeichnet durch<old>..<new>
Notation). Ein Ausgabebeispiel:Die Felder sind:
Quellmodus, Zielmodus, Quell-Hash, Ziel-Hash, Status, Dateiname
Status sind diejenigen, die Sie erwarten würden: D (gelöscht), A (hinzugefügt), M (geändert) usw. Eine vollständige Beschreibung finden Sie auf der Manpage.
quelle
Ich benutze diese im Allgemeinen, um die Protokolle zu erhalten:
quelle