这个git图是什么意思?

时间:2017-03-06 13:07:30

标签: git gitkraken

我们的团队是git的新手(我们更像是一家svn商店)。我们试图弄清楚这些概念,但有时我们会看到奇怪的结果。

例如,这是GitKraken的截图:

Git Kraken Screenshot

蓝线是主分支,为什么这里有差距?哪个git命令可以重现这个,这样做有什么问题吗?

3 个答案:

答案 0 :(得分:4)

线条及其颜色不直接对应于分支。分支只是提交的指针。 mkrieger1s answer中的链接详细讨论了这一点。

你的图表非常好,你只是在阅读/解释错误。每个大点(上面都有一个头像)是一个提交,每个提交只有一个父提交。每个小点都是一个合并提交,每个小提交都有两个父级。

中间的一个大结是一个合并提交,有两个父提交(从下面到达结的行);合并提交本身是三个提交的父级(那些在合并之上的提交)。

您可以在git存储库的每个图形表示中看到这一点,并且它非常好。

答案 1 :(得分:1)

蓝线不是您的主分支。提交不属于任何特定分支。在Git中,您的历史记录是DAG(有向无环图)。分支和标签只是粘贴到您喜欢的任何提交的便利贴,就像真正的便利贴一样,您可以剥离分支或标记标记并将其粘贴到您喜欢的任何其他提交(不一定是最好的想法已经推送历史,但完全合法与纯粹的本地东西)。分支post-it和post-it之间的唯一区别是,如果你检查了分支,那么分支post-it会自动移动到新的commit(实际上是分支,而不仅仅是分支指向的提交) ,可以有多个分支,它指向相同的提交)并创建一个新的提交。

因此,如果左上角的浅蓝色线是主分支的一部分,那么两个红色提交(但不是图像上方的新提交)以及右下方的粉红色提交以及浅蓝色和深蓝色提交左下角。

答案 2 :(得分:0)

我将尝试解释图像并通过其颜色命名分支,将圆圈/化身称为“提交”,将线相交的点称为“节点”。

enter image description here

  1. 第一个红色节点从第一个蓝色节点提取最新提交(假设这是您的master分支)
  2. 在红色分支上两次提交并且在洋红色分支上两次提交之后,粉红色拉动了红色和洋红色分支上的最新提交以将它们合并。因此,右侧的第一个节点是两个分支合并时的最新提交。
  3. 在第一个节点之后,该行变为蓝色,并返回到左侧(在可见的master / blue分支的第一次提交上垂直对齐)。第二个节点(蓝色)表示现在粉红色的merge-commit已被PR并合并到主节点。左边的第二个节点(蓝色)只是粉红色的主分支PR上的merge-commit。
  4. 有人从母版中分支出来(深蓝色),还从粉红色中提取了最新提交。 Pink继续其自己的分支,并在合并的PR之后推送了一次提交,这是由深蓝色拉出的提交。深蓝色和粉红色之间没有合并提交,因为从母版分支出来后深蓝色没有先前的提交。
  5. 但是在深蓝色从粉红色中拉出之前,有人直接将其推向了蓝色/母色,而深蓝色在那个深蓝色拉粉红色的最新提交时没有那个头。