git上奇怪的冲突



我读了一篇关于三方合并的文章。它给出了一个关于如何检测冲突的示例。示例如下:

A=[1,4,5,2,3,6]
O=[1,2,3,4,5,6] <<< Origin
B=[1,2,4,5,3,6]

第一次计算O-A和O-B之后的差值:

A=[1,4,5,2,3,   ,6]
O=[1,   ,2,3,4,5,6] 

O=[1,2,3,4,5, ,6] 
B=[1,2, ,4,5,3,6]

使diff3 parse:

A=[1,4,5,2,   3    ,6]
O=[1,   ,2, 3,4,5  ,6] <<< Origin
B=[1,   ,2, 4,5,3  ,6]

当它检测到冲突后:

1
4
5
2
<<<<<<<<<A
3
|||||||O
3
4
5
=======
4
5
3
>>>>>>B
6

在这个方法检测冲突之后,我尝试一个简单的例子:首先我有一个文档:

a;
b;

我做一个更新用户1更新"a;""a=0;"用户2更新"b;""b=0;"我得到这样的结果:

xx
<<<<<<< A
int a=0;
int b;
||||||| O
int a;
int b;
=======
int a;
int b=0;
>>>

当我合并这两个文档,我有一个冲突,即使我不改变在同一位置(a and b are not at the same position)!谁能告诉我为什么我有这个冲突?

这个问题与这个问题非常相似,答案也是:这是因为每个diff块不仅包含文字差异,还包含一些上下文行,这些上下文行需要在添加/删除了一些行的文件中定位差异,因此块偏移量发生了变化。上下文的差异也是一种冲突,因为根据你首先应用的补丁,你正在改变另一个补丁的上下文。

相关内容

  • 没有找到相关文章

最新更新