Это работает и для git show. git show --name-only SHA1,
Август Лиллеас
78
git diff --name-status [TAG|SHA1]показывает, какие операции были проделаны с файлами
переназначение
2
вы также можете сделать: git diff - name-only HEAD @ {3} HEAD @ {0} для точных коммитов, которые вы хотите сравнить.
b01
7
@AugustLilleaas, фактически использующий show, покажет только 2 конкретных коммита, если у вас есть коммиты между этими 2, они будут
пропущены
4
Как отмечено ниже, git diff --name-statusкажется, не хочет показывать добавленные файлы. @sschuberth отметил git show, что, похоже на работу правильно для меня git show --pretty=format: --name-status. Просто делать git show --name-statusдает немного больше информации, но все же приятно и плотно ... это будет моя новая команда goto;)
travc
417
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 без объединения - Файл имеет конфликты после слияния
Я случайно сказал git diff --name-status, и он дал «добавленный файл».
аартист
1
Для git log, он должен иметь две точки между SHA, например SHA1..SHA2, а второй SHA не является обязательным, поэтому он должен выглядеть следующим образом: git log --name-status --oneline [SHA1 .. SHA2]
twasbrillig
Есть ли способ исключить определенные файлы / определенные типы файлов?
август
3
--relative[=<path>]Вариант может помочь вам, я не уверен. В противном случае всегда есть | erep -v '(.tmp|.foo|.dontwant)$'...
artfulrobot
80
Кажется, что никто не упомянул переключатель --stat:
Это было действительно полезно! Я хотел бы просто сказать git diffstatus masterили подобное, что вызывает вышеизложенное.
Ома
3
Или git show --pretty=format: --name-only origin/master...
sschuberth
Возможно, вы не сможете сделать его псевдонимом git, но вы определенно можете поместить его в свой .bashrc.
Фред
3
Или даже проще: git diff --name-only HEAD...master(обратите внимание на три точки). Для подробного объяснения смотрите здесь .
Острокач
1
Похоже, в основном правильный ответ! Простой git diff --name-only master..branchне соответствует списку PR GitHub. Этот способ более точный. Но в любом случае у меня есть 173 измененных файла против 171 в github PR. (без merge-baseменя у меня 228 против 171)
x'ES
21
В дополнение к ответу @ artfulrobot, если вы хотите показать измененные файлы между двумя ветками:
git diff --name-status mybranch..myotherbranch
Будьте осторожны с приоритетом. Если вы сначала разместите более новую ветку, то она будет отображать файлы как удаленные, а не как добавленные.
Регулярные выражения хороши и могут действительно сделать почти все. В этом случае, однако, есть также, --diff-filterкоторый дает эту функциональность изначально, что означает меньшую вероятность неправильных результатов (например, ложных срабатываний)
Джаспер
8
Добавьте псевдоним ниже к вашему ~/.bash_profile, затем запустите source ~/.bash_profile,; теперь в любое время вам нужно увидеть обновленные файлы в последнем коммите, запустить showfilesиз вашего репозитория git.
alias showfiles='git show --pretty="format:" --name-only'
Также обратите внимание, если вы просто хотите увидеть измененные файлы между последним коммитом и предыдущим. Это прекрасно работает:git show --name-only
который будет регистрировать только один файл (--pretty = oneline), который является именем измененного файла. Также будет записывать все детали в ваш выходной файл.
git log --pretty=onelineдает мне только SHA и сообщение о коммите, используя git 2.10.1
damd
3
Как сказал 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, которое отображает иерархическое древовидное представление о том, что изменилось между двумя путями.
Ответы:
где вам нужно только включить достаточное количество SHA, чтобы идентифицировать коммиты. Вы также можете сделать, например,
чтобы увидеть различия между десятым последним коммитом и пятым последним (или около того).
источник
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;)похож на --name-only, за исключением того, что вы получаете простой префикс, сообщающий вам, что случилось с файлом (изменено, удалено, добавлено ...)
аналогично, но коммиты перечислены после сообщения о коммите, поэтому вы можете видеть, когда файл был изменен.
если вас интересует только то, что случилось с определенными файлами / папками, вы можете добавить
-- <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
:Это также
--numstat
а также
--shortstat
источник
Но для просмотра файлов, измененных между вашей веткой и ее общим предком с другой веткой (скажем, origin / master):
источник
git diffstatus master
или подобное, что вызывает вышеизложенное.git show --pretty=format: --name-only origin/master..
.git diff --name-only HEAD...master
(обратите внимание на три точки). Для подробного объяснения смотрите здесь .git diff --name-only master..branch
не соответствует списку PR GitHub. Этот способ более точный. Но в любом случае у меня есть 173 измененных файла против 171 в github PR. (безmerge-base
меня у меня 228 против 171)В дополнение к ответу @ artfulrobot, если вы хотите показать измененные файлы между двумя ветками:
Будьте осторожны с приоритетом. Если вы сначала разместите более новую ветку, то она будет отображать файлы как удаленные, а не как добавленные.
Добавление
grep
может улучшить вещи дальше:Затем будут показаны только файлы, добавленные в
myotherbranch
.источник
--diff-filter
который дает эту функциональность изначально, что означает меньшую вероятность неправильных результатов (например, ложных срабатываний)Добавьте псевдоним ниже к вашему
~/.bash_profile
, затем запуститеsource ~/.bash_profile
,; теперь в любое время вам нужно увидеть обновленные файлы в последнем коммите, запуститьshowfiles
из вашего репозитория git.источник
git config --global alias.showfiles 'show --pretty="format:" --name-only'
сделатьgit showfiles
.Это покажет изменения в файлах:
источник
Также обратите внимание, если вы просто хотите увидеть измененные файлы между последним коммитом и предыдущим. Это прекрасно работает:
git show --name-only
источник
Используйте git log --pretty = oneline> C: \ filename.log
который будет регистрировать только один файл (--pretty = oneline), который является именем измененного файла. Также будет записывать все детали в ваш выходной файл.
источник
git log --pretty=oneline
дает мне только SHA и сообщение о коммите, используя git 2.10.1Как сказал artfulrobot в своем ответе:
Мой пример:
источник
Просто для тех, кому нужно сосредоточиться только на файлах Java, вот мое решение:
источник
Следующее хорошо работает для меня:
$ 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, которое отображает иерархическое древовидное представление о том, что изменилось между двумя путями.источник