9

我试图用 git union merge 来理解一个令人费解的行为。要重现,请从 hello.txt 开始,其中包含:

1
2
3

在另一个提交中,添加一行,例如

1
2
new
3

在原始提交的不同foo分支中,删除中间行:

1
3

在这里,我希望合并不包含已删除的行,即使使用联合合并也是如此。然而我看到它包含(git merge foo在主人运行后):

1
2
new
3

所以它忽略了我的行删除。我只是误解了联合合并的工作原理吗?此处的示例回购:https ://github.com/davidebbo/MergeTest

还有一点需要注意:如果不是删除第 2 行,而是删除第 1 行,那么合并会按预期进行,最终结果为:

2
new
3

所以奇怪似乎只发生在标准(非联合)合并下会导致冲突的场景中。

4

1 回答 1

5

--union 合并正在正常工作。请参阅git-merge-file手册页:

不要在文件中留下冲突,而是解决有利于行两侧的冲突。

第二种情况根本不算冲突。修改后的行不相邻(#1 和#3)。

于 2012-10-18T06:45:54.680 回答