我已经创建了一个git存储库并添加了一个文本文件。这是100%用于学习目的。
我在文本文件中添加了“1”并将其提交给master。
从master创建一个新分支并附加“2”。
最后,从master创建了一个分支并附加了“3”。
请您解释一下这个或任何其他情况下可能发生的冲突?
答案 0 :(得分:29)
当两个分支都修改文件的同一区域并随后合并时,会发生合并冲突。 Git无法知道要保留哪些更改,因此需要人工干预来解决冲突。
在这种情况下,您的步骤2和3会创建两个具有冲突更改的分支。
答案 1 :(得分:25)
如果合并,则会发生冲突:
branch2
至master
(无冲突)branch3
至master
(冲突):那是因为:
master
(第二行为空)branch3
(第二行包括" 3")master
(第二行包括" 2",从branch2
合并到master
)Git会要求您选择要保留的内容(" 3"," 2"或两者)。
首先,在以下后进行合并:
git config merge.conflictstyle diff3
请参阅" Fix merge conflicts in Git?"。
答案 2 :(得分:1)
我理解这是一个古老的问题,但是如果您想以直观的方式了解Git用于比较两个文件的算法,它将澄清有关重叠区域如何与diff结合使用的疑问。
这里是Eugene W. Myers开发的一种流行算法的解释。在这种方法中,将查找最短编辑脚本(SES)建模为图形搜索。 这是詹姆斯·科格兰(James Coglan)在同一篇文章上的非常好的文章-The Myers diff algorithm