Получить возраст git commit, используя хеш

Если у нас есть git commit hash:

42f35295744738750a665dc846400c8040659d03

Есть ли способ определить / рассчитать дату его создания без дополнительной информации?

1 ответ

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

$ GIT_AUTHOR_DATE='1970-1-1 00:00:00' GIT_COMMITTER_DATE='1970-1-1 00:00:00' git commit -m gotcha
[master (root-commit) 30e9626] gotcha
 1 file changed, 1 insertion(+)
 create mode 100644 foo
$ git log --pretty=fuller | sed 's/@/ /'
commit 30e9626dce78fd41c7ef6fae317e0ed61863f0cd
Author:     Chris Torek <chris.torek gmail.com>
AuthorDate: Thu Jan 1 00:00:00 1970 -0800
Commit:     Chris Torek <chris.torek gmail.com>
CommitDate: Thu Jan 1 00:00:00 1970 -0800

    gotcha

Но, если вы не беспокоитесь о неправильной работе часов компьютера и / или о том, что пользователи намеренно подделывают свои метки времени, используйте %at или же %ct или любой из вариантов извлечения меток времени автора или коммиттера:

$ git log --no-walk --format=%at HEAD
28800
$ git log --no-walk --format=%cd HEAD
Thu Jan 1 00:00:00 1970 -0800

Смотрите раздел ДОВОЛЬНО ФОРМАТОВ git log документация для деталей.

Другие вопросы по тегам