为什么git AuthorDate与CommitDate不同?

我查找我的git日志,发现AuthorDate和CommitDate对于我的一些提交有些不同:

commit 3a5912f90dc5227f308e99f95152fbee2301c59a Author: <hidden> AuthorDate: Fri Jun 15 10:57:22 2012 +0800 Commit: <hidden> CommitDate: Fri Jun 15 11:14:37 2012 +0800 

作者和提交者是一样的我。

这是怎么发生的? 我感到困惑了好几天。

还有更多(发生在341次提交中的17次):

 +------------------------------+-------------------------------+ | from_unixtime(authored_date) | from_unixtime(committed_date) | +------------------------------+-------------------------------+ | 2012-06-15 10:57:22 | 2012-06-15 11:14:37 | | 2012-06-15 14:39:54 | 2012-06-15 14:48:57 | | 2012-06-19 12:28:21 | 2012-06-19 12:29:41 | | 2012-06-21 18:16:25 | 2012-06-21 18:28:48 | | 2012-06-26 17:30:54 | 2012-06-26 17:33:55 | | 2012-07-13 11:41:43 | 2012-07-13 11:42:17 | | 2012-07-13 11:56:02 | 2012-07-13 12:13:22 | | 2012-07-13 12:05:09 | 2012-07-13 12:12:24 | | 2012-07-12 18:38:49 | 2012-07-13 12:26:35 | | 2012-07-13 11:00:47 | 2012-07-13 12:25:15 | | 2012-07-16 14:10:54 | 2012-07-16 14:15:01 | | 2012-07-13 12:56:51 | 2012-07-16 13:49:48 | | 2012-07-16 14:10:54 | 2012-07-16 14:19:46 | | 2012-07-24 16:05:05 | 2012-07-24 16:05:48 | | 2012-07-24 17:42:58 | 2012-07-24 17:43:33 | | 2012-07-24 17:42:58 | 2012-07-24 17:45:18 | | 2012-07-26 16:55:40 | 2012-07-26 16:55:53 | +------------------------------+-------------------------------+ 

作者datelogging了这个提交最初是什么时候(即,当你完成了git commit )。 根据git commit文档,作者date可以使用--date开关覆盖。

每次提交被修改时, 提交date都会发生变化,例如,当重新绑定提交在另一个分支上的分支时。

如果您提交并将补丁发送到另一个补丁,以便在另一个补丁中应用该补丁,则可能会发生同样的情况:作者date将是您的git commit提交date,提交date将设置为该补丁的date在其他回购中应用。

如果您将该补丁发送给两位同事,则会有一个作者date,但有两个不同的提交date。

这也在Git书中提到:

您可能想知道作者提交 者有什么不同。 作者是最初编写补丁的人,而提交者是上次应用补丁的人。 所以,如果你给一个项目发送一个补丁,并且其中一个核心成员使用这个补丁,那么你们都得到了信任 – 你是作者,核心成员是提交者

作者的date保存在rebase / cherry-pick等等,但是提交date被改变了。