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?
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.
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
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.
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.
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'
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
...
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
.
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