为什么git log中的提交日期不按顺序?

时间:2012-11-01 13:12:17

标签: git

当我执行'git log'时,为什么提交的日期不按顺序?

我正在查看我的存储库的1个分支。日期应该是正确的,对吗?

2 个答案:

答案 0 :(得分:13)

无法保证日期应按任何顺序排列。事实上,你可以用Git轻松伪造日期。

但最有可能的原因是rebasing或挑选。例如,我经常做的是在本地提交一些工作,然后git pull --rebase。结果是重写了历史记录,以便我的提交现在是同时在origin/master中引入的提交的子代,但是git rebase不会更改过程中提交的日期。 git cherry-pick具有相同的效果。

如果您想查看提交更改的日期,可以git log --pretty=fuller查看CommitDates以及AuthorDates。这些更有可能是有序的,但即使在这里,也不能保证。

答案 1 :(得分:8)

不,不一定。

Git跟踪两个日期。作者日期说原作者提交时。对于电子邮件补丁,可以从电子邮件日期获取。补丁可能会在很晚的时候应用。

提交日期通常按顺序进行,就像提交时一样,并且只有在其父项存在时才能进行提交。如果提交被重新定位或挑选,它将被赋予新的提交日期,但原始作者日期将被保留。但是,即使提交日期取自机器的本地系统时间,因此它也会受到本地时钟设置的任何影响。一般情况下,无法保证机器之间的准确性或一致性。

(两个日期都包含时区信息。)