为什么git AuthorDate与CommitDate不同?

时间:2012-08-08 02:50:43

标签: 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

作者和承诺与我一样。

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

还有更多(发生在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           |
+------------------------------+-------------------------------+

3 个答案:

答案 0 :(得分:120)

作者日期会在最初提交此提交时(即您完成git commit时)。根据{{​​3}}的文档,可以使用--date开关覆盖作者日期。

每次修改提交时都会更改提交日期,例如,在另一个分支上重新提交提交所在的分支时。

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

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

git commit中也提到了这一点:

  

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

答案 1 :(得分:16)

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

答案 2 :(得分:1)

我碰巧遇到 github 显示的提交时间与 public class data { private String confirmed; private String dead; private String country; private String recovered; private String updated; public String getConfirmed() { return confirmed; } public String getDead() { return dead; } public String getRecovered() { return recovered; } public String getCountry() { return country; } public String getUpdated() { return updated; } public data(String Confirmed,String Dead,String Country,String Recovered,String Updated){ confirmed=Confirmed; dead=Dead; country=Country; recovered=Recovered; updated=Updated; } } 不同的情况,我认为这是 Github 的一个错误。

结果 github 显示了 git log,而 CommitDate 显示了 git log(没有 AuthorDate 标志)。

发生这种情况是因为我从不同的分支中挑选了两个提交。选择提交时间戳时,就像执行 fuller 时一样。

在我的例子中,Git commit --append 保留了提交日期。

还要检查 git log 中的 AuthorDate 和 CommitDate 使用 rebase Docs