使用hash获取git提交的时间

使用hash获取git提交的时间,git,git-hash,Git,Git Hash,如果我们有git提交哈希: 42f35295744738750a665dc846400c8040659d03 有没有一种方法可以确定/计算它创建的日期而不需要任何更多信息?不完全是,没有。您可以轻松提取两个时间戳作者日期和提交人日期中的任何一个,但这两个时间戳都不一定与实际创建日期有关。例如: $ GIT_AUTHOR_DATE='1970-1-1 00:00:00' GIT_COMMITTER_DATE='1970-1-1 00:00:00' git commit -m gotcha [ma

如果我们有git提交哈希:

42f35295744738750a665dc846400c8040659d03

有没有一种方法可以确定/计算它创建的日期而不需要任何更多信息?

不完全是,没有。您可以轻松提取两个时间戳作者日期和提交人日期中的任何一个,但这两个时间戳都不一定与实际创建日期有关。例如:

$ 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

有关详细信息,请参阅。

我的意思是,您能够运行命令吗?哈希本身不包含任何信息,如果这是您要问的。git show-s-format=%ci 42f35295744738750a665dc846400c8040659d03如何?啊,我想知道它是否在那里的某个地方,并且可以在不查看git日志的情况下提取。例如,我甚至可能不知道/不关心散列属于哪个git repo。实际数据在git存储库数据库中。散列只是一个键;如果没有数据库,您无法从密钥中获取数据。我认为日期/时间信息用于创建哈希,可以提取,但可能无法提取。哈希是提交内容的校验和。要查看提交的内容,请使用git cat file-p。您将看到这两个时间戳是内容的一部分。但是,如果您可以仅从时间戳对其余内容进行反向工程,则哈希将很糟糕。
$ git log --no-walk --format=%at HEAD
28800
$ git log --no-walk --format=%cd HEAD
Thu Jan 1 00:00:00 1970 -0800