我们的团队是git的新手(我们更像是一家svn商店)。我们试图弄清楚这些概念,但有时我们会看到奇怪的结果。
例如,这是GitKraken的截图:
蓝线是主分支,为什么这里有差距?哪个git命令可以重现这个,这样做有什么问题吗?
答案 0 :(得分:4)
线条及其颜色不直接对应于分支。分支只是提交的指针。 mkrieger1s answer中的链接详细讨论了这一点。
你的图表非常好,你只是在阅读/解释错误。每个大点(上面都有一个头像)是一个提交,每个提交只有一个父提交。每个小点都是一个合并提交,每个小提交都有两个父级。
中间的一个大结是一个合并提交,有两个父提交(从下面到达结的行);合并提交本身是三个提交的父级(那些在合并之上的提交)。
您可以在git存储库的每个图形表示中看到这一点,并且它非常好。
答案 1 :(得分:1)
蓝线不是您的主分支。提交不属于任何特定分支。在Git中,您的历史记录是DAG(有向无环图)。分支和标签只是粘贴到您喜欢的任何提交的便利贴,就像真正的便利贴一样,您可以剥离分支或标记标记并将其粘贴到您喜欢的任何其他提交(不一定是最好的想法已经推送历史,但完全合法与纯粹的本地东西)。分支post-it和post-it之间的唯一区别是,如果你检查了分支,那么分支post-it会自动移动到新的commit(实际上是分支,而不仅仅是分支指向的提交) ,可以有多个分支,它指向相同的提交)并创建一个新的提交。
因此,如果左上角的浅蓝色线是主分支的一部分,那么两个红色提交(但不是图像上方的新提交)以及右下方的粉红色提交以及浅蓝色和深蓝色提交左下角。
答案 2 :(得分:0)
我将尝试解释图像并通过其颜色命名分支,将圆圈/化身称为“提交”,将线相交的点称为“节点”。