为什么git log中的提交日期是无序的?

17

当我执行'git log'命令时,为什么提交日期是无序的?

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

2个回答

20

不能保证日期的顺序,实际上你可以很容易地通过Git伪造日期。

不过最有可能的原因是变基或者挑拣。比如,我经常先在本地提交一些工作,然后执行git pull --rebase。结果是,历史被重写了,使得我的提交现在成为与此同时在origin/master引入的提交的子代,但是git rebase在此过程中不会更改提交的日期。git cherry-pick也有同样的效果。

如果您想查看更改被提交的日期,可以执行git log --pretty=fuller以查看 CommitDatesAuthorDates。这些更有可能按顺序排列,但即使在这里,也不能保证。


10

不一定。

Git跟踪两个日期。作者日期表示原始作者提交的时间。对于电子邮件补丁,它可能来自电子邮件日期。补丁可能在以后的时间应用。

提交日期通常是按顺序进行的,因为它表示何时进行了提交,并且只有当其父提交存在时才能进行提交。如果提交被重新基于或挑选,它将被赋予新的提交日期,但原始作者日期将被保留。然而,即使提交日期也是从创建提交的机器的本地系统时间中获取的,因此受到本地时钟设定的影响。通常无法保证这将准确或在多台机器上保持一致。

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


谢谢。我如何使用git log以有序的方式显示“提交日期”? - michael
1
@michael: git log --pretty=fuller - Fred Foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接