与git意外合并冲突

rya*_*zec 3 git merge

所以我有这个简单的文件有3行:

some
random
words
Run Code Online (Sandbox Code Playgroud)

首次合并测试

我创建了两个不同的分支,文件处于原始状态,位于此帖子的顶部.我创建的分支merge1,从改变第一线somewill.我创建分支merge2从改变线3 wordswork.我将merge1第一个和merge2第二个合并为master,一切都按预期工作正常.

第二次合并测试

我创建了两个不同的分支,文件处于原始状态,位于此帖子的顶部.我创建的分支merge1,从改变第一线somedoesnt.我创建的分支merge2,从改变2号线randomwork.我merge1首先合并,但是当我尝试合并时,merge2我得到了一个我没想到的冲突错误.

当我打开文件时,这就是我所看到的:

<<<<<<< HEAD
doesnt
random
=======
some
work
>>>>>>> merge2
words
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么merge2显示第一行,some因为merge2没有改变那一行.具有讽刺意味的是,SVN处理得很好.

我在这里错过了什么吗?为什么我可以从同一个提交创建2个不同的分支,修改小文件的不同行,但是不能更改连续的行?

Coe*_*ect 5

基于使用git的一些推测......

根据周围环境跟踪变化.如果你查看merge2的提交的diff,它将看起来像这样:

 some
-random
+work
 words
Run Code Online (Sandbox Code Playgroud)

当您尝试将其合并到merge1修改的文件中时,它找不到锚点"some".因此,它需要询问您如何继续.而当您修改非连续行时,它仍然可以在文件中找到一些位置来锚定它需要应用的更改.

另外,请记住,git用于跟踪代码更改.合并时往往会谨慎行事,因为最好让用户弄清楚合并,而不是以某种非显而易见的方式自动合并和破坏代码.