Это не использует git log
, но если вы готовы использовать совершить объекты (хеши, ссылки на ветку или другие обязательные идентификаторы), git diff
делает это простым. Пример получения измененных файлов для последних трех коммитов.
$ git diff HEAD~3 --name-only
> some/path/with/file.php
> another/path/and/file.html
> yet/another.json
Вы можете заменить HEAD~3
либо одной commitish так что вы по сравнению с текущей HEAD (коммит вы «на»), или затем определить диапазон с совершить <commitish>..<commitish>
:
$ git diff HEAD..abcd1234 --name-only
> file/name/here.cpp
$ git diff 1234abcd..abcd1234 --name-only
> some/file/name-here.txt
Если вам необходимо отфильтровать файлы в соответствии с типом модификации (например, добавлены, изменены, удалены ...), вы можете использовать опцию --diff-filter
. man git diff
:
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are
Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added
to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing
is selected.
Если вы потребность использовать даты для фильтрации, то это не может быть лучшим вариантом. Возможно, используйте git log --since=...
, чтобы получить первый хеш для даты и передать его git diff
?
я сделал то, что вы показали выше, в более простых терминах, как "мерзавца лог --pretty = формат: --name-статус". Да Это дает только имена файлов, но добавляет статус модификации A, M, D и т. Д. В начале каждой строки перед именем файла. Вот почему я упомянул ТОЛЬКО имя файла с путём !!Любое обходное решение .. ?? – flute
@flute Получил это! Вам нужно только магия 'sed' в конце (см. Редактирование):' ... | sed -e 's/^ \ w \ t * \ * //' ' –
Вы какой-то волшебник? вы решили использовать git log для этого! оно работает! – flute