git合并出错?

时间:2013-03-12 10:05:16

标签: git git-merge

ORIGINAL:

  "<tasks>"
+ " <exec command="ls">"
+ "  <runif status="failed" />"
+ " </exec>"
+ " <exec command="ls">"
+ "  <runif status="failed" />"
+ " </exec>"
+ "</tasks>";

MODIFICATION_1:

  "<tasks>"
+ " <exec command="ls">"
+ "  <runif status="failed" />"
+ " </exec>"
+ "</tasks>";

MODIFICATION_2:

 "<tasks>"
+ " <exec command="ls">"
+ "  <runif status="passed" />"
+ " </exec>"
+ " <exec command="ls">"
+ "  <runif status="failed" />"
+ " </exec>"
+ "</tasks>";

结果:

  "<tasks>"
+ " <exec command="ls">"
+ "  <runif status="passed" />"
+ " </exec>"
+ "</tasks>";

EXPECTED_RESULT:

 "<tasks>"
+ " <exec command="ls">"
+ "  <runif status="failed" />"
+ " </exec>"
+ "</tasks>";

文件中的原始内容为 ORIGINAL

此时有人剪了一个分支,并将 ORIGINAL 编辑为 MODIFICATION_2 。 (将第一个<exec>节点从failed更改为passed

master时,某人将原始更改为 MODIFICATION_1 。 (删除第一个<exec>节点)

将分支合并为master时,更改类似于 RESULT (分支中的更改将应用​​于第二个<exec>节点而不是第一个被删除的节点!)而不是生成 EXPECTED_RESULT 或导致合并冲突!

这是预期的行为吗?有人可以解释原因吗?

1 个答案:

答案 0 :(得分:2)

这里的问题是,两个<exec>节点在 ORIGINAL 中是相同的。因此, MODIFICATION_1 的删除是不明确的(它可能是第一个或第二个实例),并且合并算法实际上设法应用这两个更改而没有任何重叠,因此不会导致合并冲突。