了解Git历史记录图

时间:2018-11-30 21:37:46

标签: git github gitkraken

以下是我正在研究的一个随机GitHub项目中的Git历史记录图,以了解Git:

enter image description here

该图来自GitKraken GUI。

下面的圆圈朝上,分为三个路径。一个路径(最右边)合并回到最左边的路径,但中间路径继续。

我的问题:在相同的Git历史记录下,此图的绘制方式是否有所不同?仅仅是可能的几种描述之一(在这种情况下,GUI客户端选择了上面的描述),还是可以用不同的方式绘制?例如,我在下面放了另一个(我自己画了它-PhotoShop),在那里我消除了最左边的路径。

enter image description here

2 个答案:

答案 0 :(得分:4)

该图应该显示事件发生时的时间(时间顺序)表示,而不仅仅是每个图的视觉上最紧凑的表示。最左边的分支是在向右分支的三个签入之前创建的,该事实将在建议的表示形式中丢失。

答案 1 :(得分:3)

(背景:数学上,图 G 包括两组 V E ,其中 V 是顶点集,而 E 是边集。有些允许V和/或E为多重集,但大多数数学家然后将结果称为多重图。在计算机科学中,我们通常将这些集称为 nodes < / em>;我不确定这在其他学科中有多普遍。Git的图是专门为有向图的图,其中边沿采用一种方式,通常称为 arcs 。Git的弧线从子对象指向父对象,而不是看似更自然的父子对象指向,原因很简单:Git希望从创建数据结构起就保持不变,并存储数据结构。与父级的输出弧。以后可以添加子级,因此所有的输出弧必须从子级指向父级。有关图的更多说明,请参见the Wikipedia page

  

...此图的绘制方式是否有所不同?

图形总是可以 以多种不同方式绘制。问题实际上是图形是否传达了适当/所需的信息。

  

我又拼了一个...

Chris Shain noted in a comment一样,此图用于其他图形(或不同的片段)。

尤其要注意,原始图形每行有一个圆点:该圆点代表提交节点。标记为“来自alexa / master的合并拉取请求#1”的一个在原始图形中,但是您的新图形对于现在缺少的合并具有 no 点:该节点不再存在!

因此,标记为“来自JakeMKelly / add-image的合并拉取请求#10”的后续节点只有一个外向弧,这意味着它不是合并-在Git中是合并commit是由于两个外向弧而至少有两个父级的提交。

结果图是否传达您需要的信息?如果是这样,就足够了。但这是不同