Git ls-files сортировать по времени модификации

Как я могу перечислить файлы, отсортированные по времени их модификации?

Я хочу время модификации git, а не время изменения системы. Например, если у меня есть (зафиксированный) файл README, то

touch README

изменит время изменения системы... но статус git останется неизменным.

Если я попробую

git ls-files -z | xargs -0 ls  -t

это будет сортироваться по времени изменения системы.

Есть ли опция git ls-files, которая будет отображать файлы, отсортированные по их времени git?

Ответ 1

Есть ли опция git ls-files, которая будет отображать файлы, отсортированные по их время модификации git?

Я так не думаю. Один из возможных способов - перебрать файлы, получить временную метку с помощью git log и sort вывода.

Для вас может быть выполнено следующее:

while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n

Ответ 2

Мне удалось сортировать файлы в папке, используя следующую команду

git ls-files -z -- "${dir}" | xargs -0 -n1 -I{} -- git log -1 --format="%at {}" {} | sort | tail -n1 | cut -d " " -f2-