Какой самый простой однострочный способ получить дату последней фиксации для группы файлов в репозитории Git (т. Е. Для каждого файла дату последней фиксации, которая изменила этот файл) ?
Контекст для этого заключается в том, что я использую другие команды Bash, чтобы найти длинный список файлов, соответствующих некоторым критериям, и я хотел бы просто передать этот список в команду Git, чтобы получить дату последней фиксации для каждого файл.
Используйте git ls-files
, чтобы найти, что файлы мерзавца, и затем git log
форматируют вывод. Но с тех пор git log
соберет в группу несколько файлов, когда они совместно используют то же время фиксации, я предпочитаю иметь их, обрабатывают один файл за один раз и затем сортируют результат.
законченная острота:
for f in $(git ls-files); do git --no-pager log --color -1 --date=short --pretty=format:'%C(cyan)%ai%Creset' -- $f ; echo " $f"; done |sort -r
, Если Вы хотите добавить его к своему .bashrc:
function gls() {
for f in $(git ls-files); do git --no-pager log --color -1 --date=short --pretty=format:'%C(cyan)%ai%Creset' -- $f ; echo " $f"; done |sort -r
}
Затем выполнение gls
произведет что-то как:
2019-09-30 11:42:40 -0400 a.c
2019-08-20 11:59:56 -0400 b.conf
2019-08-19 16:18:00 -0400 c.c
2019-08-19 16:17:51 -0400 d.pc
результат находится в порядке по убыванию времени.