Вопрос: Как перечислить все файлы в фиксации?


Я ищу простой gitкоманда, которая предоставляет хорошо отформатированный список всех файлов, которые были частью фиксации, заданной хэшем (SHA1), без посторонней информации.

Я пытался:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Хотя он содержит список файлов, он также включает в себя информацию о нежелательных различиях для каждого.

Есть ли еще gitкоманда, которая предоставит только список, который я хочу, так что я могу избежать его синтаксического анализа из git showвывод?


2121


источник


Ответы:


Предпочтительный путь (потому что это водопровод команда; должен быть программным):

$ 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



Если вы хотите получить список измененных файлов:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Если вы хотите получить список всех файлов в фиксации, вы можете использовать

git ls-tree --name-only -r <commit-ish>

186



Я просто предполагаю, что gitkдля этого не требуется. В этом случае попробуйте git show --name-only <sha>,


176



Я лично использую комбинацию --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



Недавно мне нужно было перечислить все измененные файлы между двумя коммитами. Поэтому я использовал эту (также специальную команду * 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



Вы также можете сделать

git log --name-only

и вы можете просматривать различные коммиты, фиксировать сообщения и измененные файлы.

Введите q, чтобы вернуть запрос.


55



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



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



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



$ git log 88ee8^..88ee8 --name-only --pretty="format:"

23



I use this to get list of modified files between two changesets:

git diff --name-status <SHA1> <SHA2> | cut -f2

15