и если вы хотите знать файлы, измененные для определенного коммита, сделайте:git diff --name-only <SHA> <SHA>^
thebugfinder
3
Использование --name-statusфлажка вместо --name-onlyудобного для получения списка файлов и просмотра статуса их изменения, например, «Добавлен» или «Изменен».
Тейн Пламмер
@Amber должен упомянуть заметки @Thane Plummer, которые --name-statusпоказывают, что с ними произошло
Золтан Сюле
64
Чтобы найти имена всех файлов, измененных с момента вашей последней фиксации:
git diff --name-only
Или (для получения дополнительной информации, включая неотслеживаемые файлы):
Чтобы вывести список всех неотслеживаемых файлов (перечисленных в списке, исключаяgit status любые игнорируемые файлы):
git ls-files --other --exclude-standard
Если вы используете это в сценарии оболочки, и вы хотите программно проверить , если эти команды возвращаются ничего, вы будете заинтересованы в git diff«s --exit-codeварианта.
Почему бы не использовать xargsи разовый вызов stat? Полный однострочник:git ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
ruvim
@ruvim Спасибо. Очень хорошее предложение. Я отредактировал ответ, включив ваш комментарий, для большей наглядности.
VonC
4
Мне нужен список файлов, которые изменили содержимое между двумя коммитами (только добавлены или изменены), поэтому я использовал:
Diff-фильтр = [(А | C | | М | Р | Т | У | Х | В) ... [*]]
Выберите только те файлы, которые добавлены (A), скопированы (C), удалены (D), изменены (M), переименованы (R), чей тип (т. Е. Обычный файл, символическая ссылка, подмодуль,…) изменен (T), Unmerged (U), Неизвестен (X), или у них было сломано соединение (B). Может использоваться любая комбинация символов фильтра (включая ни одного). Когда * (All-or-none) добавляется в комбинацию, выбираются все пути, если есть какой-либо файл, который соответствует другим критериям в сравнении; если нет файла, соответствующего другим критериям, ничего не выбирается.
Кроме того, эти заглавные буквы могут быть исключены в нижнем регистре. Например, --diff-filter = ad исключает добавленные и удаленные пути.
Если вы также хотите перечислить статус (например, A / M), измените --name-onlyна --name-status.
Обратите внимание, что это можно использовать только для изменений без изменений, поэтому оно бесполезно для «файлов, которые изменились между двумя коммитами Git»
Джон Ванденберг,
2
С ним git showможно получить аналогичный результат. Для просмотра коммита (как он выглядит при git logпросмотре) со списком включенных файлов, используйте:
git show --name-only [commit-id_A]^..[commit-id_B]
Где [commit-id_A]находится начальный коммит и [commit-id_B]последний коммит, который вы хотите показать.
Особое внимание с ^символом. Если вы не укажете это, информация commit-id_A не будет развернута.
Если вы хотите проверить измененные файлы, вам нужно позаботиться о многих мелких вещах, например, которые лучше всего использовать, например, если вы хотите проверить, какие из файлов были изменены, просто введите
git status - он покажет файлы с изменениями
тогда, если вы хотите знать, какие изменения должны быть сделаны, это можно проверить различными способами,
git diff - покажет все изменения во всех файлах
это хорошо, только когда изменен только один файл
и если вы хотите проверить определенный файл, используйте
Ответы:
Для файлов, измененных между данным SHA и вашим текущим коммитом:
или если вы хотите включить измененные, но еще не зафиксированные файлы:
В общем, следующий синтаксис всегда скажет вам, какие файлы изменились между двумя коммитами (указанными в их SHA или других именах):
источник
git diff --name-only <SHA> <SHA>^
--name-status
флажка вместо--name-only
удобного для получения списка файлов и просмотра статуса их изменения, например, «Добавлен» или «Изменен».--name-status
показывают, что с ними произошлоЧтобы найти имена всех файлов, измененных с момента вашей последней фиксации:
Или (для получения дополнительной информации, включая неотслеживаемые файлы):
источник
Чтобы просмотреть все неотмеченные отслеженные измененные файлы:
Для того, чтобы перечислить все поставил отслеживаемые измененные файлы:
Чтобы просмотреть все помеченные и неустановленные отслеженные измененные файлы:
Чтобы вывести список всех неотслеживаемых файлов (перечисленных в списке, исключая
git status
любые игнорируемые файлы):Если вы используете это в сценарии оболочки, и вы хотите программно проверить , если эти команды возвращаются ничего, вы будете заинтересованы в
git diff
«s--exit-code
варианта.источник
Когда я добавил / изменил / удалил много файлов (с момента последнего коммита), мне нравится смотреть на эти изменения в хронологическом порядке.
Для этого я использую:
Чтобы вывести список всех не подготовленных файлов:
Чтобы получить дату последнего изменения для каждого файла:
Хотя Рувим предлагает в комментариях :
Чтобы отсортировать их от самых старых до самых последних:
Псевдоним облегчает использование:
Или (короче и эффективнее, благодаря ruvim )
Например:
Теперь я могу просмотреть свои модификации, от самых старых до самых последних.
источник
xargs
и разовый вызовstat
? Полный однострочник:git ls-files -z --other --modified --exclude-standard | xargs -0 stat -c '%y %n' -- | sort
Мне нужен список файлов, которые изменили содержимое между двумя коммитами (только добавлены или изменены), поэтому я использовал:
Различные параметры diff-фильтра из документации git diff :
Если вы также хотите перечислить статус (например, A / M), измените
--name-only
на--name-status
.источник
Список unstaged модифицирована может быть получен с помощью
git status
иgrep
команды , как показано ниже. Что-то вродеgit status -s | grep M
:источник
С ним
git show
можно получить аналогичный результат. Для просмотра коммита (как он выглядит приgit log
просмотре) со списком включенных файлов, используйте:Где
[commit-id_A]
находится начальный коммит и[commit-id_B]
последний коммит, который вы хотите показать.Особое внимание с
^
символом. Если вы не укажете это, информация commit-id_A не будет развернута.источник
Если вы хотите проверить измененные файлы, вам нужно позаботиться о многих мелких вещах, например, которые лучше всего использовать, например, если вы хотите проверить, какие из файлов были изменены, просто введите
git status - он покажет файлы с изменениями
тогда, если вы хотите знать, какие изменения должны быть сделаны, это можно проверить различными способами,
git diff - покажет все изменения во всех файлах
это хорошо, только когда изменен только один файл
и если вы хотите проверить определенный файл, используйте
мерзавец
источник