`git log` 以什么顺序显示具有相同时间戳的提交?

问题描述 投票:0回答:1

看这个:

$ git log --oneline --graph
*   c3f035c (HEAD -> master) added files
|\  
| * df07f9e (alt) Add Z
| * 85d52b4 Add Y
| * cb54ba0 Add X
* | 0ee077f Add E
* | d968ccf Add D
* | b0777d7 Add C
|/  
* a0be85a Add B
* bb35288 Add A

^ 这显示了他们被提交的顺序。

但是如果没有--graph,输出会很混乱:

$ git log --oneline
c3f035c (HEAD -> master) added files
df07f9e (alt) Add Z
85d52b4 Add Y
cb54ba0 Add X
0ee077f Add E
a0be85a Add B
d968ccf Add D
bb35288 Add A
b0777d7 Add C

为什么最后显示C? A和B彼此分开?

git log 手册页说 --graph 暗示 --topo-order 这使得它在任何父母之前打印所有孩子,这就是我的理解。

它还说默认是反向时间顺序,所以提交按它们发生的顺序显示,但是 C 没有在 A 之前提交,这怎么可能?

问题可能是 A..E 都具有相同的提交时间戳吗? (提交日期:2023 年 3 月 9 日星期四 19:15:54 +0200)

git timestamp git-commit git-log
1个回答
0
投票

添加

--date-order
来抵御像这样古怪的时间戳双关语,这会进行额外的祖先检查。

您的列表中发生的事情是,在列出合并后,它看到两个祖先 Z 和 E。Z 较新,因此它列出并添加了它的祖先。最新的是 Y,然后重复 X,重复,现在它的候选者是 E(仍然存在)和 B(添加在 E 后面,因为它不是更新的),等等。

© www.soinside.com 2019 - 2024. All rights reserved.