如何在TFS中仅合并更改集中选定的文件



我需要将变更集合并到TFS中的另一个分支。但不幸的是,由于在这个变更集中发生了不需要的代码签入,我无法将整个变更集合并到新分支。因此,我需要跳过变更集中不需要的文件,并将其他文件合并到新的分支中。有可能这样做吗?Ps:由于变更集很大,我无法手动合并它。

您可以这样做,您将要实现的目标有点像部分合并。

只有变更集中的一些更改合并到目标时,会记录部分合并。下面有两种常见的场景,您可以最终进行部分合并:

场景1:在检查合并文件时撤消一些挂起的更改

在这种情况下,即使我们已经将变更集Dev合并到Main,它仍然是一个合并候选者。这是由于合并引擎检测到该变更集中仍有一些未从Dev传播到Main的更改。

场景2:在功能级别执行合并,而不是从分支顶部执行

例如:假设您有两个分支MainDev,每个分支都有两个文件夹(Feature1和Feature2(,每个功能文件夹都包含一个文件。我们编辑功能文件夹(DevFeature1feature1.txtDevFeature2feature2.txt(中的两个文件,并签入更改。

如果在Feature1级别执行合并操作。(Changset142→Changeset143(您会注意到,在"挂起的更改"窗口中,只有在Feature1文件夹中完成的编辑才会被合并。完成合并。

如果您查看Feature1文件夹的合并历史,您会发现变更集142中的所有更改都已合并到变更集143中。

然而,如果你查看Main的合并历史,你会发现只有变更集142的一部分被合并到变更集143中。这是正常的,因为变更集142有一些更改——对Feature2文件夹中的文件进行编辑——但没有交付。


在部分合并的情况下,要弄清楚合并了哪些更改以及遗漏了变更集中的哪些更改。实现这一点的唯一方法是diff部分合并的变更集的内容,以及作为合并结果生成的变更集内容。更多详细信息,你可以参考这个博客:TFS中的部分合并-指南

因此,如果您不需要的代码只存在单个或几个文件,您可以按照场景1操作,撤消这些文件。

如果这些文件仍然包含一些其他需要的更改,那么我建议您直接合并所有更改,并在合并操作后创建一个新的变更集,以排除那些不需要的代码。

这应该是最简单的解决方案。

最新更新