Visual studio 使用Team Foundation服务器中的Team Foundation版本控制将分支的最新版本合并到其根目录中 我们使用VisualStudio 2017的Team Foundation版本控制试图进行合并,但我们不知道它是否是可行的,甚至是明智的。

Visual studio 使用Team Foundation服务器中的Team Foundation版本控制将分支的最新版本合并到其根目录中 我们使用VisualStudio 2017的Team Foundation版本控制试图进行合并,但我们不知道它是否是可行的,甚至是明智的。,visual-studio,tfs,version-control,branching-and-merging,Visual Studio,Tfs,Version Control,Branching And Merging,我将解释我的问题的简化版本: 我们在源代码管理中有一个根分支,我们称之为根,我们有一个根分支,我将称之为分支 我们将更改提交给分支,当我们确定需要在根上进行更改时,我们将从一个分支合并到另一个根(我们进行反向集成)。问题是,我们在过去做过一些合并,我们只选择了分支中变更集的一个子集来将它们合并到根中 现在,在Branch中进行了一些其他更改之后,我们知道Branch的最新版本正在运行,我们希望将该版本合并到Root中 问题是,当我们进行合并时,文件的版本与上次修改该文件的变更集上的版本相同,而该

我将解释我的问题的简化版本:

我们在源代码管理中有一个根分支,我们称之为根,我们有一个根分支,我将称之为分支

我们将更改提交给分支,当我们确定需要在根上进行更改时,我们将从一个分支合并到另一个根(我们进行反向集成)。问题是,我们在过去做过一些合并,我们只选择了分支中变更集的一个子集来将它们合并到根中

现在,在Branch中进行了一些其他更改之后,我们知道Branch的最新版本正在运行,我们希望将该版本合并到Root中

问题是,当我们进行合并时,文件的版本与上次修改该文件的变更集上的版本相同,而该变更集未合并到根目录中。但我们知道,Branch中该文件的最后一个版本是我们想要的版本,即使它没有出现,因为使其处于该状态的变更集可能已经在以前被合并过(事实上,大多数tiemes,Branch和Root中该文件的最后一个版本是相同的,我们不希望进行更改)

例如:

我们将变更集1设为分支,并将其合并为根

我们将变更集2合并到分支中,修改文件1(但我们不将其合并到根中)

我们将变更集3设置为分支,再次修改文件1,然后将其合并到根目录中。现在,Branch和Root拥有相同版本的文件

我们将变更集4、5、6制作成与文件1无关的分支

现在我们要做的是将任何文件的最新版本合并到根目录中,因为它现在在分支中

但如果我尝试将分支合并到根中,它将提示存在冲突,并且它将在冲突解决程序中显示:

作为源的变更集2之后的文件1(即未合并到根目录中的最后一个变更集之后的文件版本),以及

File1,因为它在根目录中作为目标(这恰好是我在上一版本的Branch中拥有的File1的同一版本,我希望保持这种方式)

顺便说一句,如果我们用最新版本、变更集(使用最新版本)、日期(现在)、工作区等标记“选择所有变更直到…”,这并不重要。。或者“选定的变更集”,然后我们选择所有内容(当然,以前合并的变更集不会出现在这里)。
这是不是告诉源代码管理我们想要将分支中每个文件的最新版本合并到根目录中,而不管变更集以前是否合并过?所有这些都有意义吗?还是我遗漏了什么?

TFS合并引擎依赖于历史记录,而不是文件内容。您可以选中
tf merge/candidate
命令来列出源中尚未合并到目标中的变更集。并使用
tf merge/version
合并更改。检查以下链接:


顺便说一句,总会有需要手动合并的情况

您是否检查并尝试了以下答案中提到的建议?这对你有用吗?