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