"git log" 突然变色

Sudden color change in "git log"

请考虑以下我使用的 git log 别名:

log --date-order --color-moved --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''%C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all

现在,请考虑上面的别名生成的以下屏幕截图: 可以看到,在屏幕截图中的红色圆圈中,有突然的颜色变化。这是为什么?

我认为我的别名有问题。

编辑: @eis 在评论中要求的澄清:例如,看一下第一个红色圆圈。从那里开始有一个新分支,对吧?它以黄色 / 开头,然后立即变为蓝色 |。应该是蓝色开头的。

Clarification as requested by @eis in the comments: for example, take a look at the first red circle. There is a new branch starting there, right?

不,没有。该区域的文字为:

| * 8760adec - Wed, 23 Mar 2022 22:47:50 -0200 (5 weeks ago)
|/            Red - refaelsh
| * 6a8d1d15 -  Wed, 23 Mar 2022 22:28:12 -0200 (5 weeks ago)

中间线上的黄色正斜杠从 * 标记提交 8760adec 连接到 left-hand-side 垂直线 | 导致提交 * 8ddae51a,表示8760adec的(单)parent为8ddae51a.

分支的 start 远离屏幕底部,可能是根提交。分支的 end 超出屏幕顶部。分支名称选择哪个提交被视为“该分支的最后一次提交”。1

确实 parent 提交 8ddae51a 两个分支 上,即沿着左边缘追踪的那个,也是为黄色斜线向下连接 左边缘。 Child 提交 8760adec 仅在一个分支上可见(尽管它也可能在许多其他分支上;如果是这种情况,我们只是不会查看它们)。

无论如何,|/\等字符的着色点只是为了让你更好地理解它们眼睛。他们标记特定的分支。这是不可能的,因为许多提交同时在许多分支上。


1第一个提交通常是根提交,通常在每个分支。有些人喜欢在这里调换 first 和 last 的含义,因为 Git 反向工作:由分支命名的 tip 提交是“最后”提交,但它始终是您 看到的第一个 当你 Git 查看提交时,因为 Git 向后工作。