Eug*_*ene 5 git merge conflict git-merge merge-conflict-resolution
我仍然没有确定的方法来重现这个,但如果这是一个众所周知的问题,我还是会问它.会发生什么是git经常会产生这样的冲突:
<<<<<<< HEAD
} // action_do_add
=======
} // action_do_add
...lots of code here...
>>>>>>> some_branch
Run Code Online (Sandbox Code Playgroud)
所以我没有注意到我只是添加了一段新代码,而是认为我修改了整行代码.这有时会发生在文件的中间,但最常见的是 - 在文件的末尾.我的猜测是它可能与行尾字符有关,但我还是必须运行测试来确认这一点.有没有人有同样的问题,如果是的话,你如何解决它?
合并时,git会检查上下文与周围行的差异.考虑以下代码:
def a
do_something_a
end
def b
do_something_b
end
def c
do_something_c
end
Run Code Online (Sandbox Code Playgroud)
当一个分支在方法中更改某些内容a(或删除它),而另一个分支在方法中更改某些内容c(或删除它)时,您仍然拥有b两个diff 的方法上下文.这就是为什么变化可能会合并而不会发生冲突.
但是,如果您有这样的事情:
def a
do_something_a
end
def c
do_something_c
end
Run Code Online (Sandbox Code Playgroud)
在一个分支中编辑一个方法而在另一个分支中编辑另一个方法时,您很可能会遇到冲突,因为您在另一个分支中打破了差异的相应上下文.
这也是为什么它经常发生在文件末尾的原因 - 因为只有diff 上面的上下文,但没有下面的上下文.