为什么git AuthorDate与CommitDate不同?

Fis*_*tor 89 git

我查找我的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
Run Code Online (Sandbox Code Playgroud)

作者和承诺与我是一样的.

这是怎么发生的?我困惑了几天.

还有更多(发生在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           |
+------------------------------+-------------------------------+
Run Code Online (Sandbox Code Playgroud)

eck*_*kes 134

作者日期笔记时,这个原本承诺作出(即当你完成了git commit).根据文档git commit,可以使用--date开关覆盖作者日期.

提交日期被改为每提交基础重建,其中承诺是在另一个分支的分支时被修改,例如时间.

如果您进行提交并将修补程序发送到另一个修补程序以便在另一个仓库中应用修补程序,则会发生同样的情况:作者日期将是您的日期git commit,提交日期将设置为应用修补程序的日期另一个回购.

如果您将修补程序发送给两位同事,则会有一个作者日期,但会有两个不同的提交日期.

这也在Git Book中提到:

您可能想知道作者提交者之间的区别.的作者是谁最初写补丁的人,而提交者是谁最后应用补丁的人.因此,如果您向项目发送补丁并且其中一个核心成员应用补丁,那么您都会得到信任 - 您作为作者,核心成员作为提交者

  • 不。我相信日期是 SHA 的一部分,因此除非您执行一些重写历史的操作,例如重新定位,否则它不应更改。 (4认同)
  • 简要描述我们应该如何期望时间戳在挑选、修改或重新调整提交的祖先之后发生变化,我们将不胜感激。玩弄`git show -s --format="commit %cD author %aD" HEAD`,似乎,例如,用`git gui`修改提交消息会更新两者,但`git commit --amend ` 仅更新提交者日期。不直观。 (4认同)

Mic*_*son 20

提交的作者日期保留在rebase/cherry-pick等上.但提交日期已更改.

  • `git commit --amend`也是如此. (7认同)
  • 以及“squash”或“fixup”和“reword” (2认同)