git union merge带回一些删除的行

Dav*_*bbo 9 git git-merge

我试图通过git union merge来理解一个令人费解的行为.要重新启动,请从具有以下内容的hello.txt开始:

1
2
3
Run Code Online (Sandbox Code Playgroud)

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

1
2
new
3
Run Code Online (Sandbox Code Playgroud)

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

1
3
Run Code Online (Sandbox Code Playgroud)

在这里,我希望合并不包含已删除的行,即使使用union merge也是如此.但是我看到它包含(git merge foo在主人身上跑完之后):

1
2
new
3
Run Code Online (Sandbox Code Playgroud)

所以它忽略了我的行删除.我只是误解了工会合并是如何运作的?样本回复:https://github.com/davidebbo/MergeTest

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

2
new
3
Run Code Online (Sandbox Code Playgroud)

因此,奇怪的情况似乎只发生在会导致标准(非联合)合并下的冲突的场景中.

Tsv*_*nev 5

--union合并正在按预期方式工作。请参见git-merge-file手册页:

相反,离开冲突的文件中,化解矛盾有利于行的一侧。

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