Получить возраст 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
документация для деталей.