Відповіді:
git diff --name-only SHA1 SHA2
де потрібно лише включити достатню кількість SHA для ідентифікації комітетів. Ви також можете зробити, наприклад
git diff --name-only HEAD~10 HEAD~5
щоб побачити відмінності між десятим останнім чином і п'ятим останнім (або близько того).
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
показує, які операції були зроблені і над файлами
git diff --name-status
схоже, не хочеться показувати додані файли. @sschuberth зазначив git show
, що, схоже на роботу правильно для мене git show --pretty=format: --name-status
. Щойно робити git show --name-status
трохи більше інформації, але все-таки приємно і щільно ... це буде моя нова команда goto;)
git diff --name-status [SHA1 [SHA2]]
є як -name-only, за винятком того, що ви отримуєте простий префікс, який повідомляє вам про те, що сталося з файлом (змінено, видалено, додано ...)
git log --name-status --oneline [SHA1..SHA2]
подібний, але комісії перераховуються після повідомлення про фіксацію, тож ви можете побачити, коли файл було змінено.
якщо вас цікавить, що саме сталося з певними файлами / папками, ви можете додати -- <filename> [<filename>...]
до git log
версії.
якщо ви хочете побачити, що сталося за один вчинок, назвіть це SHA1, тоді зробіть
git log --name-status --oneline [SHA1^..SHA1]
Прапори статусу файлу:
M модифіковано - Файл змінено
C-редагування C - Файл скопійовано та змінено
R перейменування-редагування - Файл перейменовано та змінено
Додано - Файл додано
D видалено - Файл видалено
U unmerged - У файлі виникають конфлікти після злиття
--relative[=<path>]
варіант може вам допомогти, я не впевнений. Інакше завжди є | erep -v '(.tmp|.foo|.dontwant)$'
…
Здається, ніхто не згадав про вимикач --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(-)
Тут є також --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
і --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Але для того, щоб побачити зміни файлів між вашою гілкою та її загальним предком з іншою гілкою (скажімо, походження / головний):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
чи подібне, що викликає вищесказане.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
не відповідає списку PR github. Цей спосіб більш точний. Але все одно у мене є 173 сканованих файли проти 171 в github PR. (без merge-base
мене 228 проти 171)
Щоб доповнити відповідь @ artfulrobot, якщо ви хочете показати змінені файли між двома гілками:
git diff --name-status mybranch..myotherbranch
Будьте уважні до переваги. Якщо ви розмістите спочатку нову гілку, вона відображатиме файли як видалені, а не додані.
Додавання канцелярії grep
може додатково уточнити:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Потім буде показано лише додані файли myotherbranch
.
--diff-filter
функціональність, яка дає можливість використовувати цю функцію, тобто менше шансів на неправильні результати (наприклад, помилкові позитиви)
Додайте до нього псевдонім ~/.bash_profile
, а потім запустіть source ~/.bash_profile
; тепер у будь-який час вам потрібно побачити оновлені файли в останньому фіксації, запустіть, showfiles
зі свого сховища git.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
зробити git showfiles
.
Це покаже зміни у файлах:
git diff --word-diff SHA1 SHA2
Як сказав у своїй відповіді artfulrobot:
git diff --name-status [SHA1 [SHA2]]
Мій приклад:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Наступне добре працює для мене:
$ git show --name-only --format=tformat: SHA1..SHA2
Він також може бути використаний з одним комітом:
git show --name-only --format=tformat: SHA1
яка зручна для використання в Дженкінсі, де вам надано Список змінSet SHA, і хочете переглядати їх, щоб побачити, які файли були змінені.
Це схоже на пару відповідей, поданих вище, але використовує, tformat:
а не format:
видаляє простір між розділами.
На підставі git diff --name-status
я написав розширення git git-diffview, яке надає ієрархічний вигляд дерева того, що змінилося між двома шляхами.