gpt4 book ai didi

git - git 上的奇怪冲突

转载 作者:太空狗 更新时间:2023-10-29 13:26:39 26 4
gpt4 key购买 nike

我读了一篇关于三向 merge (diff3) 的文章。它给出了有关如何检测冲突的示例。例子是:

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 解析 之后:

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;
>>>

当我 merge 这两个文档时,即使我不在同一位置更改(a 和 b 不在同一位置),我也会发生冲突!有人可以解释我为什么会发生这种冲突吗?

最佳答案

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

关于git - git 上的奇怪冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com