[英]Strange conflict on git
我讀了一篇關於三向合並的文章(diff3)。 它給出了一個如何檢測沖突的示例。 例子是:
A=[1,4,5,2,3,6]
O=[1,2,3,4,5,6] <<< Origin
B=[1,2,4,5,3,6]
在第一次計算OA和OB之后的差異時:
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
),我也會發生沖突! 有人可以解釋我為什么會有這種沖突?
這個問題是非常相似, 這一次 ,得到的回答也是:這是因為每一個差異大塊不僅包括字面差異,而且上下文的一些行所需要的定位是增加了一些行的文件的區別/刪除,因此大塊的偏移量發生變化。 上下文中的差異也是一種沖突,因為根據您首先應用的補丁,您將更改其他補丁的上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.