当我执行'git log'命令时,为什么提交日期是无序的?
我正在查看存储库的一个分支。日期应该是有序的,对吗?
不能保证日期的顺序,实际上你可以很容易地通过Git伪造日期。
不过最有可能的原因是变基或者挑拣。比如,我经常先在本地提交一些工作,然后执行git pull --rebase
。结果是,历史被重写了,使得我的提交现在成为与此同时在origin/master
引入的提交的子代,但是git rebase
在此过程中不会更改提交的日期。git cherry-pick
也有同样的效果。
如果您想查看更改被提交的日期,可以执行git log --pretty=fuller
以查看 CommitDates
和 AuthorDates
。这些更有可能按顺序排列,但即使在这里,也不能保证。
不一定。
Git跟踪两个日期。作者日期表示原始作者提交的时间。对于电子邮件补丁,它可能来自电子邮件日期。补丁可能在以后的时间应用。
提交日期通常是按顺序进行的,因为它表示何时进行了提交,并且只有当其父提交存在时才能进行提交。如果提交被重新基于或挑选,它将被赋予新的提交日期,但原始作者日期将被保留。然而,即使提交日期也是从创建提交的机器的本地系统时间中获取的,因此受到本地时钟设定的影响。通常无法保证这将准确或在多台机器上保持一致。
(这两个日期都包括时区信息。)
git log --pretty=fuller
。 - Fred Foo