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