Jak mieć git log pokazywać nazwy plików jak svn log-v

Dziennik SVN ma tryb "- v", który wyświetla nazwy plików zmienionych w każdym zatwierdzeniu, tak:

jes5199$ svn log -v
------------------------------------------------------------------------
r1 |   jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 line
Changed paths:
   A /AUTHORS
   A /COPYING
   A /ChangeLog
   A /EVOLUTION
   A /INSTALL
   A /MacOSX

Czy istnieje szybki sposób na uzyskanie listy zmienionych plików w każdym commicie w git?

Author: jes5199, 2009-08-05

7 answers

Dla pełnych nazw ścieżek zmienionych plików:

git log --name-only

Dla pełnych nazw ścieżek i statusu zmienionych plików:

git log --name-status

Dla skrótów ścieżek i dyfuzji zmienionych plików:

git log --stat

Jest o wiele więcej opcji, sprawdź dokumenty.

 1244
Author: CB Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-04 08:18:28

UWAGA: git whatchanged jest przestarzałe, użyj git log zamiast

Nowi użytkownicy są zachęcani do korzystania git-log[1] zamiast tego. Na whatchanged Polecenie jest zasadniczo takie samo jak git-log[1] ale domyślnie pokazuje wyjście diff w formacie raw i pominięcie scalenia.

Komenda jest zachowana przede wszystkim ze względów historycznych; palce wielu ludzie, którzy nauczyli się Gita na długo przed git log został wymyślony przez czytanie Lista dyskusyjna jądra Linuksa jest szkolona do wpisz to.


Możesz użyć polecenia git whatchanged --stat, Aby uzyskać listę plików, które zmieniły się w każdym zatwierdzeniu (wraz z Komunikatem zatwierdzania).

Referencje

 135
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-11 21:45:06

git show jest również wielkim poleceniem.

To trochę jak svn diff, ale możesz przekazać mu guid commit i zobaczyć ten diff.

 46
Author: ptc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 00:02:03

Jeśli chcesz pobrać nazwy plików tylko bez reszty komunikatu commit, możesz użyć:

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

To może być rozszerzone, aby użyć różnych opcji, które zawierają nazwę pliku:

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

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

Podczas używania tej metody należy zwrócić uwagę na to, że na wyjściu znajdują się puste linie, które należy zignorować. Użycie tej opcji może być przydatne, jeśli chcesz zobaczyć pliki, które zostały zmienione w lokalnej gałęzi, ale nie zostały jeszcze przesunięte do gałęzi zdalnej i nie ma gwarancja, że najnowsze informacje z pilota zostały już wyciągnięte. Na przykład:

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

Wyświetli wszystkie pliki, które zostały zmienione w lokalnej gałęzi, ale nie zostały jeszcze połączone z główną gałęzią na zdalnym.

 37
Author: Hazok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-11 02:06:37

Używam tego na co dzień, aby pokazać historię z plikami, które się zmieniły:

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

Aby było krótko, dodaj alias w swoim .gitconfig wykonując:

git config --global alias.ls 'log --stat --pretty=short --graph'
 30
Author: xsor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-06 19:40:26

Używam tego:

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

Który wyświetla tylko listę plików i ich stan (dodany, zmodyfikowany, usunięty):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...
 14
Author: Sofia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-30 13:18:26

git diff --stat HEAD^! pokazuje zmienione pliki i dodane / usunięte liczenia linii dla ostatniego commita (HEAD).

Wydaje mi się, że nie ma jednego polecenia, aby uzyskać zwięzłe dane wyjściowe składające się tylko z nazw plików i dodanych i usuniętych linii zliczających kilka commitów na raz, więc stworzyłem własny skrypt Basha:

#!/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

Do nazwania np. ./changed_files 99 aby uzyskać zmiany w zwięzłej formie z HEAD na HEAD~99. Może być orurowany np. do less.

 7
Author: nrz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-25 01:08:49