我一直试图在一些原因导致的测试存储库中以不同的条件进行一些基础和合并。
这是我对合并冲突的理解,它们基本上是在要素分支的更改与 master 的更改(与它们分开的提交)不同时出现的。 / p>
这是我正在测试的存储库的分支结构。
C (feature)
/
B
/
A-----D (master)
每个版本的内容只是一个名为file
的文件
A:
line 1
line 2
line 3
line 4
D:
changed line 1
line 2
line 3
line 4
B:
line 1
changed line 2
line 3
line 4
C:
line 1
changed line 2
changed line 3
line 4
现在,当我执行git merge master feature
时,显示与文件以下内容的合并冲突,
<<<<<<< HEAD
line 1
changed line 2
changed line 3
||||||| 00f97ec
line 1
line 2
line 3
=======
changed line 1
line 2
line 3
>>>>>>> master
line 4
这是我对git如何合并文件的理解:
但是我的存储库不是这种情况,那么为什么会发生冲突。如果我对合并冲突的理解有误,请纠正我。
答案 0 :(得分:1)
发生内容冲突的规则非常简单:git看到两个分支以不同的方向修改了同一段代码。可以添加/添加,添加/修改,添加/删除,修改/修改,修改/删除或删除/删除。
在您的特定情况下,您会发生冲突,因为构成冲突部分内容的所有行均已修改。从A到D,修改后的行后有第2行。但是在另一分支上,该行已消失,因此git不会对由于合并而想要获取的内容进行任何猜测,因此会发生冲突。如果这两行之间有固定的间隔,使其通过两个分支(类似于----
),就不会有冲突。