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

How to merge only selected files from a change-set in TFS

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

你可以这样做,你将要实现的目标类似于部分合并。

部分合并只有来自变更集的一些变更被合并到目标 时,会被记录下来。下面有两种常见的情况,您可以最终进行部分合并:

场景1:Undo检查合并文件时的一些未决更改

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

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

例如:假设您有两个分支 MainDev,每个分支都有两个文件夹(Feature1 和 Feature2)和每个功能文件夹包含一个文件。我们从功能文件夹(Dev\Feature1\feature1.txtDev\Feature2\feature2.txt)编辑这两个文件并签入更改。

如果在Feature1层面进行merge操作(Changset142→ Changeset143) 你会注意到在 Pending Changes window 中只有在 Feature1 文件夹中完成的编辑才会被合并。完成合并。

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

但是,如果您查看 Main 的合并历史记录,您会发现只有变更集 142 的部分内容已合并到变更集 143 中。这是正常的,因为变更集 142 有一些更改 – 文件的编辑Feature2 文件夹 – 未交付。


在部分合并的情况下,找出哪些变更已被合并以及变更集中的哪些变更被遗漏了。实现此目的的唯一方法是 diff 部分合并的变更集的内容,以及作为合并结果生成的变更集的内容。更多详细信息您可以参考这个博客:Partial Merges in TFS – A Guide

因此,如果您不需要的代码只存在于单个或几个文件中,您可以按照方案 1,撤消这些文件。

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

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