小编Neu*_*nas的帖子

在 GIT 中重复合并。它如何计算差异?

我一直在研究试图了解 GIT 合并是如何工作的。我知道有几种合并类型,如递归、章鱼等。我发现解析/递归是最常用的。并且只有在有几个共同的祖先/基础时,递归合并才有用。

但是,我无法找到使用哪种算法(或应该如何计算祖先)并从分支重复合并到主节点。

一个简单的例子。让我们创建一个包含 1 个文件“A”的空项目:

A
Run Code Online (Sandbox Code Playgroud)

然后创建另一个文件“B”并提交给master

A
B
Run Code Online (Sandbox Code Playgroud)

然后我从只有一个文件“A”的第一个版本创建一个分支并创建另一个文件“C”。所以我的分支看起来像这样:

A
C
Run Code Online (Sandbox Code Playgroud)

然后我决定将我的分支更改合并到 master,我得到:

A
B
C
Run Code Online (Sandbox Code Playgroud)

然后我决定回到我的分支并从那里继续我的工作。我创建了另一个文件“D”

A
C
D
Run Code Online (Sandbox Code Playgroud)

现在我想将我的更改从分支合并回主干。祖先是如何计算的?

视觉示例: 重复合并

如果我拿祖先“AC”来说,应该说“B”也是一个新增的,因为它不存在于两个版本中:分支和祖先。

如果我拿祖先“ABC”来说,应该说“B”被删除了,因为B存在于两个版本中:主人和祖先。

这两个选项看起来都不正确。我试图通过使用具有合并解释功能的“Plastic SCM”来弄清楚它。正如它所显示的,祖先/基础被用作版本“AC”,但是它仍然正确地计算了添加了多少文件(只有 1 而不是 2)。

在此处输入图片说明

git merge plasticscm

3
推荐指数
1
解决办法
139
查看次数

标签 统计

git ×1

merge ×1

plasticscm ×1