在 TFS 中,如何对特定变更集进行无根据的合并?

Posted

技术标签:

【中文标题】在 TFS 中,如何对特定变更集进行无根据的合并?【英文标题】:In TFS, how do I do a baseless merge on specific changesets? 【发布时间】:2010-11-29 01:37:38 【问题描述】:

与TFS 中的大多数事情一样,您得到的比您讨价还价的要多。在这种情况下,我在合并期间看到的文件更改比我预期的要多。

我有 2 个子分支,让我们激动一下,称它们为 branch1 和 branch2。自创建以来,两者都对其进行了更改。我需要从 branch2 中获取 12 个特定的变更集并将它们合并到 branch1 中。来自 branch2 的更改无法返回到父分支。所以这是一个毫无根据的合并的简单案例,但结果不是我所期望的。

采用第一个变更集,我运行了以下命令:

tf merge /baseless /recursive /version:C95654 branch2 branch1

变更集 95654 包含 12 个已更改的文件,但在此命令之后,我得到 56 个已编辑的冲突文件。我原本希望只将指定的变更集从一个分支合并到另一个分支,但它似乎已经合并了整个文件夹。

那么,为什么我在指定变更集时会更改 56 个文件而不是 12 个?另外,我可以做些什么来限制合并到该变更集的内容?

【问题讨论】:

【参考方案1】:

如果您需要合并特定的变更集,您需要使用以下语句:

tf merge /baseless /recursive /version:C95654~C95654 branch2 branch1

(这意味着只有变更集 C95654)。

您使用的命令行表示 C95654 之前和之后的每个变更集。

【讨论】:

是否有可能我进行了毫无根据的合并,但我没有得到 branch1(目标)代码?,【参考方案2】:

我不得不为两个分支使用 tfs 路径。步骤是:将两个分支添加到所需的工作区;获取最新信息;在目标文件夹中打开一个 Windows powershell。获取 tfs 路径

>tf workspaces /format:detailed 
>tf workfold

然后使用 $paths 作为分支。一个变更集的 tilde ment baseless 合并之间的变更集编号相同。

>tf merge /baseless /recursive /version:C999~C999 "$/MyRepo/Current" "$/MyRepo/Development"

这里有更多—— http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx

【讨论】:

以上是关于在 TFS 中,如何对特定变更集进行无根据的合并?的主要内容,如果未能解决你的问题,请参考以下文章

如何撤消 TFS 中的回滚?

将整个解决方案/项目回滚到 TFS 中的特定变更集?

如何在 TFS 中恢复回滚的更改集?

在 TFS 中,如何更正现有变更集上工作项的链接

在 TFS 2013 中启动回滚后,我可以恢复我最近的本地更改吗?

如何撤消 TFS 2010 中的变更集回滚?