git union merge返回一些已删除的行

git union merge返回一些已删除的行,git,git-merge,Git,Git Merge,我试图理解git union merge的一个令人费解的行为。要重新编程,请从具有以下内容的hello.txt开始: 1 2 3 在另一个提交中,添加一行,例如 1 2 new 3 在原始提交的另一个分支中,删除中间行: 1 3 在这里,我希望合并不会包含已删除的行,即使在使用union merge时也是如此。但我看到它包含(在主机上运行git merge foo后): 所以它忽略了我的行删除。我只是误解了工会合并的工作原理吗?此处的回购示例: 还有一个注意事项:如果您没有删除第2行,而是

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

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

1
2
new
3
在原始提交的另一个分支中,删除中间行:

1
3
在这里,我希望合并不会包含已删除的行,即使在使用union merge时也是如此。但我看到它包含(在主机上运行
git merge foo
后):

所以它忽略了我的行删除。我只是误解了工会合并的工作原理吗?此处的回购示例:

还有一个注意事项:如果您没有删除第2行,而是删除了第1行,那么合并将按预期进行,结果是:

2
new
3
因此,这种奇怪的情况似乎只发生在标准(非联合)合并下可能导致冲突的场景中。

联合合并正在正常工作。请参见手册页:

不要将冲突保留在文件中,而是解决有利于行两边的冲突


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

您使用了什么完整命令进行合并
git union merge
不是设计用来处理删除的,实际上,它主要用于日志文件之类的东西-它所做的只是以相对合理的顺序将它看到的任何行和所有行放在一起。@Amber抱歉,刚才在问题中补充了这一点。奇怪的是,没有“merge=union”,不可避免的冲突实际上表明了正确的事情:一方有“2”和“新”,另一方没有。union的文档描述意味着它只影响“添加”的处理方式。“delete”应该没有合并问题。真正令人费解的行为。那么,你是说处理删除时的行为大多是不可预测的,这只是不应该做的事情?注意,在某些情况下,删除的行仍然被删除。是的,我认为你是对的。可以说,删除的行并没有真正引起冲突,因为该行已明确消失。但它可能只是不够聪明,无法解决这个问题。如果不提其他惊天动地的事情,我明天会把这个作为答案:)
2
new
3