Frage Wie git log show filenamen wie svn log -v


Das SVN-Protokoll hat einen "-v" -Modus, der Dateinamen von Dateien ausgibt, die bei jedem Commit geändert wurden, so:

jes5199 $ svn log -v
-------------------------------------------------- ----------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Mi, 03 Jan 2007) | 1 Zeile
Geänderte Pfade:
   A / AUTOREN
   A / KOPIEREN
   A / Änderungsprotokoll
   A / EVOLUTION
   A / INSTALL
   A / MacOSX

Gibt es eine schnelle Möglichkeit, eine Liste der geänderten Dateien in jedem Commit in git zu erhalten?


768
2017-08-04 21:46


Ursprung


Antworten:


Für vollständige Pfadnamen geänderter Dateien:

git log --name-only

Für vollständige Pfadnamen und Status geänderter Dateien:

git log --name-status

Für abgekürzte Pfadnamen und einen Diffstat geänderter Dateien:

git log --stat

Es gibt viel mehr Möglichkeiten, Schaut euch die Dokumentation an.


1215
2017-08-04 21:48



HINWEIS:  git whatchanged ist veraltet, verwenden git log stattdessen


134
2017-08-04 21:48



git show ist auch ein großartiges Kommando.

Es ist irgendwie wie svn diff, aber Sie können es eine Commit-Guid übergeben und sehen, dass Diff.


46
2018-03-22 00:02



Wenn Sie die Dateinamen nur ohne den Rest der Commit-Nachricht erhalten möchten, können Sie Folgendes verwenden:

git log --name-only --pretty=format: <branch name>

Dies kann dann erweitert werden, um die verschiedenen Optionen zu verwenden, die den Dateinamen enthalten:

git log --name-status --pretty=format: <branch name>

git log --stat --pretty=format: <branch name>

Bei der Verwendung dieser Methode ist zu beachten, dass in der Ausgabe einige Leerzeilen vorhanden sind, die ignoriert werden müssen. Dies kann nützlich sein, wenn Sie die Dateien anzeigen möchten, die in einer lokalen Verzweigung geändert wurden, aber noch nicht in eine Remoteverzweigung verschoben wurden, und es gibt keine Garantie, dass die neueste Datei von der Remoteinstanz bereits abgerufen wurde :

git log --name-only --pretty=format: my_local_branch --not origin/master

Zeigt alle Dateien an, die in der lokalen Zweigstelle geändert wurden, aber noch nicht mit der Hauptverzweigung auf der entfernten Seite zusammengeführt wurden.


37
2017-07-11 02:06



Ich verwende dies täglich, um die Historie mit geänderten Dateien anzuzeigen:

git log --stat --pretty=short --graph

Um es kurz zu halten, fügen Sie einen Alias ​​in Ihrem ein .gitconfig indem du tust:

git config --global alias.ls 'log --stat --pretty=short --graph'

29
2018-05-25 00:24



Ich benutze das:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

die nur eine Liste von Dateien und ihren Status (hinzugefügt, geändert, gelöscht) ausgibt:

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

12
2017-09-30 13:18



git diff --stat HEAD^! Zeigt geänderte Dateien und hinzugefügte / entfernte Zeilen für das letzte Commit (HEAD).

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 Zeilenzählungen für mehrere Commits auf einmal besteht, also habe ich mein eigenes Bash-Skript dafür erstellt:

#!/bin/bash
for ((i=0; i<=$1; i++))
do
    sha1=`git log -1 --skip=$i --pretty=format:%H`
    echo "HEAD~$i $sha1"
    git diff --stat HEAD~$(($i+1)) HEAD~$i 
done

Um zB aufgerufen zu werden. ./changed_files 99 um die Änderungen in einer prägnanten Form zu erhalten HEAD zu HEAD~99. Kann verrohrt werden z. zu less.


7
2017-11-25 01:08