Как получить дату последней фиксации для группы файлов в Git? - PullRequest
46 голосов
/ 23 декабря 2011

Какой самый простой однострочный, чтобы получить дату последнего коммита для группы файлов в репозитории Git (то есть для каждого файла, дату последнего коммита, который изменил этот файл)?

Контекст для этого заключается в том, что я использую другие команды Bash, чтобы найти длинный список файлов, соответствующих некоторым критериям, и я хотел бы просто передать этот список в команду Git, чтобы получить дату последнего принятия для каждого файла .

Ответы [ 3 ]

66 голосов
/ 23 декабря 2011

Будет полезна следующая команда:

git log -1 --format=%cd filename.txt

Это напечатает дату последнего изменения для одного файла. -1 показывает одну запись в журнале (самую последнюю), а --format=%cd показывает дату принятия. См. Документацию для git-log для полного описания опций.

Вы можете легко расширить это для группы файлов.

8 голосов
/ 18 мая 2012

Немного расширив ответ Грега, git log может принимать несколько путей в своем аргументе.Затем он покажет только те коммиты, которые включали эти пути.Поэтому, чтобы получить последний коммит для группы файлов:

git log -1 --format=%cd -- fileA.txt fileB.txt fileC.txt

Я довольно хлам в сценариях оболочки, поэтому я не совсем уверен, как создать эту команду с помощью конвейера, но, возможно, это 'Буду хорошей темой для другого вопроса.

3 голосов
/ 26 января 2017

Вот один вкладыш, использующий find (разбит на несколько для удобства чтения, но благодаря завершающим обратным слешам копирование-вставка должно работать):

find <dirs...> -name '<pattern>' <any other predicate to get what you want> \
  -exec git log -1 --format="AAA%ai NNN" '{}' \; \
  -exec echo '{}' XXX \; \
| tr \\n N | sed -e 's/AAA/\n/g' | sed -e 's/NNNN/ /g' -e 's/XXX.*//g'

Чрезмерно сложный перенос новой строки с tr и sed предназначен только для того, чтобы получить дату и имя файла в одной строке и игнорировать неотслеживаемые файлы. Вы должны убедиться, что ни один из ваших файлов не содержит этих глупых маркеров AAA XXX NNNN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...