我有主要和开发分支。我在两者中进行了更改并签入。我从main合并到dev并签入。现在我从dev合并到main。我有冲突。这怎么可能?
答案 0 :(得分:3)
在一个方向上解决合并冲突不一定适合另一个方向的合并。在许多工作流程中,您基本上是为了保持两个分支尽可能相似而合并 - 例如,将开发分支的更改转换为生产分支,并且可能将关键错误修正从生产分支转移回开发分支。在这种工作流程中,你通常不希望在合并两个分支时出现分歧(毕竟你想在两个分支中都想要那个关键的bug修复),所以你不得不同时解决合并冲突的原因并不明显,但这肯定是这不是处理分支机构时唯一的工作流程。
我曾经在一个Java项目上工作,该项目有一些实用程序库,我们与一个处理不同项目的组共享。在某些时候,由于各种原因,我们的图书馆需要与他们的图书馆分道扬,因此我们选择了他们项目的一个分支,两个小组都对图书馆进行了独特的更改。有时碰巧我们会修复一个错误,有时他们会添加一个新功能,所以我们经常会相互来回合并。
你可以在这里看到,从我们的分支到他们的分支的合并结果不一定是从他们的分支合并到我们的分支的结果。让我们假设有一个文件,我们添加了一些新的方法,并可能修复了一些错误。我们假设他们添加了一些不同的方法。当他们将我们的更改合并到他们的分支中时,他们会遇到合并冲突,让我们假设他们采用了错误修正但没有采用我们的新方法,因为他们不需要它们。现在当我们进行合并以将更改添加到我们的分支中时,我们仍然会发生合并冲突 - 这允许我们将他们的方法带入我们的文件。
如果TFS根据我们分支机构的结果对他们的分支机构进行合并做出一些假设,那将是不准确的。