我有一个包含此内容的文件:
line 1
line 2
line 3
line 4
在分支A
上提交。
由此,我创建了一个分支B
并删除了提交中的第三行。
我结帐分支A
并删除另一个提交中的第二行。
当我在分支B
中合并分支A
时,我在该文件中遇到如下冲突:
line 1
<<<<<<< HEAD
line 2
=======
line 3
>>>>>>> B
line 4
1)如果修改了相同的行,为什么会出现冲突? 2)为什么它显示为那样而不是:
line 1
<<<<<<< HEAD
=======
>>>>>>> B
line 4
更清楚地表明这些行被删除了吗?
答案 0 :(得分:2)
为了确保它不会破坏任何东西,任何体面的差异程序也会跟踪至少两行上下文:一个在上面,一个在添加/修改/删除的行下面。
当您删除分支B上的第3行时,实际上是修改了第2-4行的块。类似地,在分支A上修改1-3行的块。
这两个块重叠,它们引入了不同的变化。 Git无法确定如何合并这些更改,这就是为什么它将它们标记为冲突。
分支B上的文件内容是:
line 1
line 2
line 4
但在当前分支(分支A)上是:
line 1
line 3
line 4
哪一个是&#34;正确&#34;版?合并后你期望得到什么? Git说不清楚。 我说不出来。只有你可以告诉。
line 1
<<<<<<< HEAD
line 2
=======
line 3
>>>>>>> B
line 4
在简单的英语中,上面的块显示:&#34; line 1
和line 4
之间,当前分支上有line 2
但分支B上有line 3
&# 34。
你建议的阻止:
line 1
<<<<<<< HEAD
=======
>>>>>>> B
line 4
表示:在两个分支上,line 1
和line 4
之间没有任何内容。这不是真的。
你永远不会在差异中遇到这样的障碍。它基本上意味着文件的比较版本之间没有冲突。