我已经提交了一个分支bugfix,樱桃选择了提交 进入分支发展。然后我对bugfix分支进行了更改B. 触摸提交A中的代码区域。 现在,当我将origin / develop合并回分支bugfix时 git表示围绕这些方面的冲突。 这是git中的错误还是故意设计? 我的意思是:导致人造冲突的变化起源于此 在bugfix分支和那个分支ALREADY HAD提交A。
答案 0 :(得分:3)
与合并时不同,一个挑选的提交不再是相同的提交,而是包含相同更改的新提交(查看樱桃选择的提交的哈希并将其与原来的)。因此,当您最终将两个分支合并在一起时,在您的两个分支中的任何一个中,受樱桃挑选的提交影响的代码的更改将导致合并冲突。实际上,对于Git而言,就好像你已经以一种独立的方式在你的两个分支上以不同的方式完成了更改(因为你之后更改了挑选的提交的代码)。
如果在最终将它们合并之前没有更改受两个分支中任何一个分支影响的代码,git将看到两个不同的提交,但具有完全相同的更改。在这种情况下,不会显示合并冲突。
请注意,提交不仅仅是它包含的更改。它也是您完成更改,提交消息,父提交等的日期。这是创建新提交的方式。
这就是为什么你应该避免使用樱桃选择,如果还有其他方法可以实现你所需要的。
答案 1 :(得分:1)
冲突只是表明分支A顶端的代码与分支B顶端的代码冲突。如果您在bugfix分支中所做的更改发生了冲突"如果最初在樱桃选择的提交中完成了更改,您将解决这些更改。
我的意思是:导致虚假冲突的变化起源于 bugfix分支和那个分支ALREADY HAD提交A。
但是你也说你在bugfix分支中做了更多改动?那段代码没有发展,因此冲突......