2

我有主分支和开发分支。我对两者都进行了更改并签入。我从 main 合并到 dev 并签入。现在我从 dev 合并到 main。我有冲突。这怎么可能?

4

1 回答 1

3

为一个方向的合并解决冲突不一定适用于另一个方向的合并。在许多工作流程中,您基本上是合并以使两个分支尽可能相似 - 例如,将更改从开发分支转移到生产分支,并且可能将关键错误修复从生产分支移回开发分支。在这种工作流程中,您通常不希望在合并两个分支时出现分歧(毕竟,您希望在两个分支中都有关键的错误修复)所以不清楚为什么您必须两次解决合并冲突,但这当然是不是使用分支时的唯一工作流程。

我曾经在一个 Java 项目上工作,该项目有一些实用程序库,我们与从事不同项目的小组共享这些实用程序库。在某些时候,由于各种原因,我们的库需要与他们的库有所不同,因此我们采用了他们项目的一个分支,并且两个团队都对库进行了独特的更改。有时我们会修复一个错误,有时他们会添加一个新功能,所以我们经常相互合并。

在这里可以看到,我们分支合并到他们分支的结果不一定是他们分支合并到我们分支的结果。假设有一个文件,我们在其中添加了一些新方法并可能修复了一些错误。让我们假设他们添加了一些不同的方法。当他们将我们的更改合并到他们的分支中时,他们会遇到合并冲突,让我们假设他们接受了错误修复,但没有采用我们的新方法,因为他们不需要它们。现在,当我们进行合并以将他们的更改放入我们的分支时,我们仍然会遇到合并冲突 - 这允许我们将他们的方法放入我们的文件中。

如果 TFS 要根据我们分支到他们分支的结果对从他们分支到我们分支的合并做出一些假设,那将是不准确的。

于 2011-05-06T17:12:04.687 回答