Ответы:
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 copy-edit - Файл был скопирован и изменен
R rename-edit - Файл был переименован и изменен
A добавлен - Файл был добавлен
D удален - Файл был удален
U без объединения - Файл имеет конфликты после слияния
--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(-)
Но для просмотра файлов, измененных между вашей веткой и ее общим предком с другой веткой (скажем, origin / master):
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
Используйте git log --pretty = oneline> C: \ filename.log
который будет регистрировать только один файл (--pretty = oneline), который является именем измененного файла. Также будет записывать все детали в ваш выходной файл.
git log --pretty=oneline
дает мне только SHA и сообщение о коммите, используя git 2.10.1
Как сказал 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
который удобен для использования в Jenkins, где вам предоставляется список SHA changeSet, и вы хотите просмотреть их, чтобы посмотреть, какие файлы были изменены.
Это похоже на пару ответов выше, но использует tformat:
вместо format:
удаления разделитель между коммитами.
Основываясь на этом, git diff --name-status
я написал расширение git git-diffview, которое отображает иерархическое древовидное представление о том, что изменилось между двумя путями.