了解 Git 历史图表
Understanding a Git history graph
下面是我正在研究的随机 GitHub 项目的 Git 历史图表,以了解 Git:
图表来自 GitKraken GUI。
下方圆圈,朝上,分为三条路径。一条路径(最右边)合并回最左边的路径,但中间路径继续。
我的问题:鉴于相同的 Git 历史,这张图是否可以不同地绘制?它只是可能的几种描述之一(在这种情况下,GUI 客户端选择了上面的描述),还是可以以不同的方式绘制?比如我在下面拼了一个(我自己画的-PhotoShop),把最左边的路径去掉了。
图表应该显示事件发生时的时间(按时间顺序)表示,而不仅仅是每个图表的视觉上最紧凑的表示。最左侧的分支是在右侧分支的三个签入之前创建的,并且该事实将在您提议的表示中丢失。
(背景:在数学上,一个图G包含两组V和E,其中 V 是顶点集,E 是边集。有些人允许 V and/or E 是多重集,但大多数数学家然后将结果称为多重图。在计算机科学中,我们通常将集合称为 nodes;我不确定这在其他学科中有多普遍。Git 的图特别是 有向图,其中的边是单向的,通常称为arcs。Git的弧指向child 回到 parent,而不是 seemingly-more-natural parent-to-child 方向,原因很简单:Git 希望数据结构从创建之时起就保持不变,并且 Git 存储与 parent 的出弧。Children 可以稍后添加,因此所有出弧必须指向 child 到 parent。参见 the Wikipedia page 以获得更多关于图表的注释。)
... could this graph have been drawn differently?
图表可以总是以多种不同的方式绘制。真正的问题是绘图是否传达了 appropriate/desired 信息。
I put together another one ...
作为,这张图是为不同的图(或不同的片段)绘制的。
特别注意,原图每行有一个圆点:这个圆点代表提交节点。标有 "Merge pull request #1 from alexa/master" 的那个在原始绘图中,但是您的新绘图有 没有 点用于 now-missing 合并:该节点不再存在!
因此,标记为"Merge pull request #10 from JakeMKelly/add-image"的后续节点只有一个个出弧,这意味着它不是合并——在Git中,一个合并提交是由于两个传出弧而至少有两个 parent 的提交。
生成的图表是否传达了您需要的信息?如果是这样,那就足够了。但是不同.
下面是我正在研究的随机 GitHub 项目的 Git 历史图表,以了解 Git:
图表来自 GitKraken GUI。
下方圆圈,朝上,分为三条路径。一条路径(最右边)合并回最左边的路径,但中间路径继续。
我的问题:鉴于相同的 Git 历史,这张图是否可以不同地绘制?它只是可能的几种描述之一(在这种情况下,GUI 客户端选择了上面的描述),还是可以以不同的方式绘制?比如我在下面拼了一个(我自己画的-PhotoShop),把最左边的路径去掉了。
图表应该显示事件发生时的时间(按时间顺序)表示,而不仅仅是每个图表的视觉上最紧凑的表示。最左侧的分支是在右侧分支的三个签入之前创建的,并且该事实将在您提议的表示中丢失。
(背景:在数学上,一个图G包含两组V和E,其中 V 是顶点集,E 是边集。有些人允许 V and/or E 是多重集,但大多数数学家然后将结果称为多重图。在计算机科学中,我们通常将集合称为 nodes;我不确定这在其他学科中有多普遍。Git 的图特别是 有向图,其中的边是单向的,通常称为arcs。Git的弧指向child 回到 parent,而不是 seemingly-more-natural parent-to-child 方向,原因很简单:Git 希望数据结构从创建之时起就保持不变,并且 Git 存储与 parent 的出弧。Children 可以稍后添加,因此所有出弧必须指向 child 到 parent。参见 the Wikipedia page 以获得更多关于图表的注释。)
... could this graph have been drawn differently?
图表可以总是以多种不同的方式绘制。真正的问题是绘图是否传达了 appropriate/desired 信息。
I put together another one ...
作为
特别注意,原图每行有一个圆点:这个圆点代表提交节点。标有 "Merge pull request #1 from alexa/master" 的那个在原始绘图中,但是您的新绘图有 没有 点用于 now-missing 合并:该节点不再存在!
因此,标记为"Merge pull request #10 from JakeMKelly/add-image"的后续节点只有一个个出弧,这意味着它不是合并——在Git中,一个合并提交是由于两个传出弧而至少有两个 parent 的提交。
生成的图表是否传达了您需要的信息?如果是这样,那就足够了。但是不同.