git extensions显示多个";“分行”;即使我只选择了一个

git extensions显示多个";“分行”;即使我只选择了一个,git,git-extensions,Git,Git Extensions,即使我在git扩展中只选择了一个分支,它仍然会显示类似的内容。为什么会有额外的垂直线?正如我发现的,在我的本地回购协议中,红色部分是分支,为什么有单独的带标签的蓝线,为什么它们不在红线上 编辑:这些圆和矩形是什么意思 git分支基本上是一个指向提交的名称,但每当向分支添加新提交时,它所指向的提交就会更新 Git是一个非循环有向图。每个git提交都有a)一个可选的,b)一个可选的父提交(如果是合并提交,则有两个或多个父提交),以及c)提交元数据(提交者名称、电子邮件、提交消息等)。这意味着一个分支

即使我在git扩展中只选择了一个分支,它仍然会显示类似的内容。为什么会有额外的垂直线?正如我发现的,在我的本地回购协议中,红色部分是分支,为什么有单独的带标签的蓝线,为什么它们不在红线上

编辑:这些圆和矩形是什么意思


git分支基本上是一个指向提交的名称,但每当向分支添加新提交时,它所指向的提交就会更新

Git是一个非循环有向图。每个git提交都有a)一个可选的,b)一个可选的父提交(如果是合并提交,则有两个或多个父提交),以及c)提交元数据(提交者名称、电子邮件、提交消息等)。这意味着一个分支(在实现中只是一个指向提交的特殊自动更新指针)表示整个子图,可以通过从该提交沿着其父级及其父级等进行遍历来访问。在没有合并的历史中,您将得到您所期望的;一条直线。在具有合并的历史记录中,您将看到此处的内容,多个路径向外扩展(当提交启动两个单独的分支时,会向内合并),这两个分支后来合并在一起。

对于您的编辑: 这些圆圈代表历史上的修订。
正方形表示一个或多个分支引用的修订。

因为其他分支合并到此分支中,而不是重新设置基础。从技术上讲,每个提交都有一个树,而不是一个更改集。更改集是动态计算的:使用提交获取树,使用提交父级(或任何真正的更改)要获得另一棵树,请区分这两棵树。这对于单亲提交并不重要,但对于多亲(合并)提交,这一技术点开始更重要。:-)事实上,git支持“octopus”(3个或更多父)提交。是的,也可以是标记。在GitExtensions源代码中确认:只要有指向该提交的“Git引用”(在源代码中称为“修订版”),就会绘制正方形。这将在Git参考主题下介绍。简而言之:分支和标记。在GitExtensions源代码中看一眼,它似乎没有在绘制正方形的标准中包含远程引用(但我可能错了,因为我已经没有时间研究它了)。