簡體   English   中英

git上的奇怪沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM