所以我有这个简单的文件有3行:
some
random
words
首次合并测试
我在master的帖子顶部创建了两个不同的分支,文件处于原始状态。我创建了分支merge1
,将第一行从some
更改为will
。我创建了分支merge2
,它将第3行从words
更改为work
。我先将merge1
和merge2
秒合并为master,所有内容都可以正常工作。
第二次合并测试
我在master的帖子顶部创建了两个不同的分支,文件处于原始状态。我创建了分支merge1
,将第一行从some
更改为doesnt
。我创建了分支merge2
,它将第2行从random
更改为work
。我首先合并merge1
然后当我尝试合并merge2
时,我收到了一个我没想到的冲突错误。
当我打开文件时,这就是我所看到的:
<<<<<<< HEAD
doesnt
random
=======
some
work
>>>>>>> merge2
words
我不明白为什么merge2将第一行显示为some
,因为merge2没有更改该行。具有讽刺意味的是,SVN处理得很好。
我在这里遗漏了什么吗?为什么我可以使用同一个提交创建的2个不同的分支修改小文件的不同行,但是不能更改连续的行?
答案 0 :(得分:5)
基于使用git的一些推测...
根据周围环境跟踪变化。如果你看看merge2的提交的差异,它将看起来像这样:
some
-random
+work
words
当您尝试将其合并到merge1修改的文件中时,它找不到锚点“some”。因此,它需要询问您如何继续。而当您修改非连续行时,它仍然可以在文件中找到一些位置来锚定它需要应用的更改。
另外,请记住,git用于跟踪代码更改。合并时往往会谨慎行事,因为最好让用户弄清楚合并,而不是以一种非显而易见的方式自动合并和破坏代码。