了解 Git的基础知识和合并基础知识一章中 出现的一个问题。
为什么后来的提交位于图表的“皇冠”中被视为父母,箭头指向他们,而不是来自他们?
毕竟,从逻辑上讲,它们是先前状态的“演员表”。
比如用这张图说明hotfix分支合并到master分支
我们合并的分支 (*note - hotfix) 指向一个提交,它是我们当前正在进行的提交 (**note - master) 的直接父级,Git 只是向前移动了它的指针
从这个描述可以看出,C4 是 C2 的父级,尽管情况恰恰相反(C4 包含一个指向 C2 的 parentId)

我怀疑这里有翻译错误。
“父提交”是每个提交中关于它之前的状态的标签,采用提交哈希的格式。标签不必是一个。它可以是零(对于初始提交)或多个(对于合并)。
通常,父提交在子提交之前进行,但实际上时间不会影响提交图的结构,只会影响上述“标记”。违反这一点是相当奇特的,但也是可能的。
关于箭头,有两种截然相反的样式:
没有首选。除非,在他们谈论 Git 设计的地方,他们更喜欢第二种风格,因为它更符合 Git 的真实设计,而不是开发人员头脑中方便的抽象图片。
数字表示正确的时间顺序。
C0是树的根,第一次提交。其他提交来自它。创建新提交时,它会收到一个指向当前最新提交的指针,该提交成为新提交的父提交。该指针是一个 40 个字符的 SHA-1 哈希字符串。当然,每个提交都可以是任意数量的其他提交的父级。合并提交可以有两个或更多父级——使用 SHA-1 的多行。
箭头表示的正是这个指针。您可以按照箭头进行到底 - 根提交。在极少数情况下,特制的情况下,可能有不止一个根 - git 允许您合并两个不相关的树。