Jak wypisać tylko nazwy plików, które zmieniły się między dwoma zatwierdzeniami?
Mam kilka commitów w repo. Chcę zobaczyć listę plików zmienionych pomiędzy dwoma commitami-z SHA1 na SHA2.
Jakiego polecenia powinienem użyć?
11 answers
git diff --name-only SHA1 SHA2
Gdzie musisz tylko dołączyć wystarczającą ilość SHA, aby zidentyfikować commity. Można również zrobić, na przykład
git diff --name-only HEAD~10 HEAD~5
Aby zobaczyć różnice między dziesiątym ostatnim commitem a piątym ostatnim (lub tak).
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
2009-10-12 01:51:34
git diff --name-status [SHA1 [SHA2]]
Jest jak --name-only, z wyjątkiem prostego przedrostka informującego o tym, co się stało z plikiem (zmodyfikowanym, usuniętym, dodanym...)
git log --name-status --oneline [SHA1..SHA2]
Jest podobny, ale commity są wyświetlane po komunikacie commit, więc możesz zobaczyć, kiedy plik został zmieniony.
Jeśli interesuje Cię tylko to, co stało się z niektórymi plikami/folderami, możesz dołączyć
-- <filename> [<filename>...]
do wersjigit log
.Jeśli chcesz zobaczyć, co się stało z pojedynczym commitem, nazwij go SHA1, a następnie do
git log --name-status --oneline [SHA1^..SHA1]
Flagi statusu pliku:
M modified-plik został zmodyfikowany
C copy-edit-File has been copied and modified
R rename - edit-File has been renamed and modified
Dodano - plik
D deleted-plik został usunięty
U unmerged-plik zawiera konflikty po połączeniu
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-03-10 22:15:48
Ale aby zobaczyć zmiany plików pomiędzy twoją gałęzią a jej wspólnym przodkiem z inną gałęzią (powiedzmy origin/master):
git diff --name-only `git merge-base origin/master HEAD`
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-02-23 19:08:21
Wygląda na to, że nikt nie wspomniał o przełączniku --stat
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
Istnieją również --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
I --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
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-10-19 21:50:40
Aby uzupełnić odpowiedź @artfulrobot, jeśli chcesz pokazać zmienione pliki między dwoma gałęziami:
git diff --name-status mybranch..myotherbranch
Uważaj na pierwszeństwo. Jeśli najpierw umieścisz nowszą gałąź, wyświetli ona pliki jako usunięte, a nie dodane.
Dodanie grep
może jeszcze bardziej Dopracować:
git diff --name-status mybranch..myotherbranch | grep "A\t"
, które następnie pokażą tylko pliki dodane w myotherbranch
.
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-12-29 13:17:26
Dodaj poniżej alias do ~/.bash_profile
, następnie uruchom, source ~/.bash_profile
; teraz w każdej chwili musisz zobaczyć zaktualizowane pliki w ostatnim zatwierdzeniu, run, showfiles
z repozytorium git.
alias showfiles='git show --pretty="format:" --name-only'
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-04-10 19:38:17
To pokaże zmiany w plikach:
git diff --word-diff SHA1 SHA2
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-12-04 15:10:40
Użycie Git log --pretty=oneline >C:\filename.log
Który zarejestruje tylko oneline (--pretty=oneline) o nazwie zmienionego pliku. Również zapisze wszystkie szczegóły do pliku wyjściowego.
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-10 10:59:35
Zwróć również uwagę, jeśli chcesz zobaczyć zmienione pliki pomiędzy ostatnim zatwierdzeniem a poprzednim. To działa dobrze: git show --name-only
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-10-01 20:42:14
Jak powiedział artfulrobot w swojej odpowiedzi:
git diff --name-status [SHA1 [SHA2]]
Mój przykład:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
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
2018-05-03 12:37:07
Na podstawie git diff --name-status
napisałem rozszerzenie git-diffview Git, które renderuje hierarchiczny widok drzewa zmian pomiędzy dwiema ścieżkami.
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-11-03 09:39:46