当我执行'git log'时,为什么提交的日期不按顺序?
我正在查看我的存储库的1个分支。日期应该是正确的,对吗?
答案 0 :(得分:13)
无法保证日期应按任何顺序排列。事实上,你可以用Git轻松伪造日期。
但最有可能的原因是rebasing或挑选。例如,我经常做的是在本地提交一些工作,然后git pull --rebase
。结果是重写了历史记录,以便我的提交现在是同时在origin/master
中引入的提交的子代,但是git rebase
不会更改过程中提交的日期。 git cherry-pick
具有相同的效果。
如果您想查看提交更改的日期,可以git log --pretty=fuller
查看CommitDates
以及AuthorDates
。这些更有可能是有序的,但即使在这里,也不能保证。
答案 1 :(得分:8)
不,不一定。
Git跟踪两个日期。作者日期说原作者提交时。对于电子邮件补丁,可以从电子邮件日期获取。补丁可能会在很晚的时候应用。
提交日期通常按顺序进行,就像提交时一样,并且只有在其父项存在时才能进行提交。如果提交被重新定位或挑选,它将被赋予新的提交日期,但原始作者日期将被保留。但是,即使提交日期取自机器的本地系统时间,因此它也会受到本地时钟设置的任何影响。一般情况下,无法保证机器之间的准确性或一致性。
(两个日期都包含时区信息。)