这个 git 图是什么意思?

rem*_*rel 5 git gitkraken

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

例如,这是来自 GitKraken 的屏幕截图:

Git Kraken 截图

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

kow*_*sky 5

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

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

中间的大结是具有两个父提交的合并提交(从下面到达结的行);合并提交本身是另外三个提交(位于合并本身之上的提交)的父提交。

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


Vam*_*ire 2

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

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