2017-03-06 127 views
2

我们的团队是git的新手(我们更多的是svn店)。我们试图弄清楚这些概念,但有时我们会看到奇怪的结果。这个git图表是什么意思?

例如,这里是从GitKraken截图:

Git Kraken Screenshot

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

+1

可能重复[我们是什么意思的“分支”?](http://stackoverflow.com/questions/25068543/what-exactly-do-we-mean-by-branch) – mkrieger1

+1

@ mkrieger1也许它是一个重复,因为我们不完全明白什么是分支,但你能解释我们什么我们明白错误 –

回答

1

蓝线不是您的主分支。提交不属于任何特定的分支。在Git中,您的历史记录是DAG(有向无环图)。分支和标签只是粘贴到你喜欢的任何提交后的便签,与真正的便利贴一样,你可以剥离分支或标签标记并将其粘贴到任何你喜欢的其他提交(不一定是已推送的最好主意历史,但完全合法纯粹地方的东西)。分支post-it和标签post之间的唯一区别是,分支post-it会在检出分支时自动移动到新的提交中(实际上是分支,而不仅仅是分支提交的提交,可能有多个分支后指向相同的提交)并创建一个新的提交。因此,如果左上角的浅蓝色线条是主分支的一部分,那么两个红色的提交(而不是图像上方的新提交)以及右下方的粉红色提交以及浅蓝色和暗蓝色提交在左下方。

4

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

你的图形非常好,你只是在阅读/解释错误。每个大点(包含一个化身)都是一个提交,每个提交只有一个父提交。每个小点都是一个合并提交,每个合并提交都有两个父母。

中间的大结是两个父提交(从下面到达结的行)的合并提交;合并提交本身是另外三个提交(超出合并本身的提交)的父代。

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

-1

它看起来像蓝色分支合并到红色分支,然后删除。还行吧;当分支合并时,其中的提交成为目标分支的一部分,因此不再需要“主”。 后来,创建了一个新的“主”分支。

+0

没有主wa wa snot创建或删除,并且t似乎(与其他答案相比),你没有得到这个图是制作的 –

+0

那么,你问“哪个git命令可以重现这个”,删除和重新创建主分支是重现你的结果的一种方法。重点是,一旦您的主分支成为另一分支的一部分(例如通过合并),您是否删除它并稍后重新创建并不重要;一个git分支没有历史记录,但它指向的是提交。 – Molip