Вопрос: Как перечислить все файлы в фиксации?
Я ищу простой git
команда, которая предоставляет хорошо отформатированный список всех файлов, которые были частью фиксации, заданной хэшем (SHA1), без посторонней информации.
Я пытался:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Хотя он содержит список файлов, он также включает в себя информацию о нежелательных различиях для каждого.
Есть ли еще git
команда, которая предоставит только список, который я хочу, так что я могу избежать его синтаксического анализа из git show
вывод?
2121
2018-01-08 12:26
источник
Ответы:
Предпочтительный путь (потому что это водопровод команда; должен быть программным):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Другой путь (менее предпочтительным для скриптов, поскольку это фарфор команда; предназначенный для пользователя)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
-
--no-commit-id
подавляет вывод идентификатора фиксации. -
--pretty
аргумент указывает пустую строку форматирования, чтобы избежать появления трещины в начале. -
--name-only
аргумент показывает только имена файлов, которые были затронуты (спасибо Хэнку). -
-r
аргумент заключается в том, чтобы возвращать в поддеревья
2796
2018-01-08 13:02
Если вы хотите получить список измененных файлов:
git diff-tree --no-commit-id --name-only -r <commit-ish>
Если вы хотите получить список всех файлов в фиксации, вы можете использовать
git ls-tree --name-only -r <commit-ish>
186
2018-01-14 19:22
Я просто предполагаю, что gitk
для этого не требуется. В этом случае попробуйте git show --name-only <sha>
,
176
2018-01-08 12:34
Я лично использую комбинацию --stat а также --одна линия с показать команда:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Если вам не нравится / требуется статистика добавления / удаления, вы можете заменить --stat с --name только
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
110
2017-07-11 23:21
Недавно мне нужно было перечислить все измененные файлы между двумя коммитами. Поэтому я использовал эту (также специальную команду * nix)
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
Обновить : Или, как указывает Этан ниже
git diff --name-only START_COMMIT..END_COMMIT
С помощью --name-status
также будет включать изменения (добавленные, измененные, удаленные и т. д.) рядом с каждым файлом
git diff --name-status START_COMMIT..END_COMMIT
58
2018-04-26 12:23
Вы также можете сделать
git log --name-only
и вы можете просматривать различные коммиты, фиксировать сообщения и измененные файлы.
Введите q, чтобы вернуть запрос.
55
2018-05-27 01:20
Simplest form:
git show --stat (hash)
That's easier to remember and it will give you all the information you need.
If you really want only the names of the files you could add the --name-only
option.
git show --stat --name-only (hash)
46
2017-07-16 00:06
I use changed alias a quite often. To set it up:
git config --global alias.changed 'show --pretty="format:" --name-only'
then:
git changed (lists files modified in last commit)
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)
Similar commands that may be useful:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
45
2018-04-29 13:13
Using standard git diff command (also good for scripting):
git diff --name-only <sha>^ <sha>
If you want also the status of the changed files:
git diff --name-status <sha>^ <sha>
This works well with merge commits.
34
2018-04-29 14:53
$ git log 88ee8^..88ee8 --name-only --pretty="format:"
23
2018-01-08 14:11
I use this to get list of modified files between two changesets:
git diff --name-status <SHA1> <SHA2> | cut -f2
15
2018-03-28 07:37