如何仅合并两个变更集(TFS)

Posted

技术标签:

【中文标题】如何仅合并两个变更集(TFS)【英文标题】:how to merge two changesets only (TFS) 【发布时间】:2011-04-23 18:48:23 【问题描述】:

你看到 162489 和 162990,我该如何合并它们?

【问题讨论】:

目前还不清楚您想对这些变更集做什么。您是否只想将这些变更集中的变更合并到另一个分支,而忽略所有其他变更? 见***.com/a/22729936/67824 【参考方案1】:

我猜你只想将这两个特定的变更集合并到另一个分支中。

您不能一次合并多个变更集,除非变更集是按顺序排列的。

使用tf 命令行工具,您可以通过用波浪号分隔版本来指定一系列版本。

tf merge /recursive /version:C162489~C162990 "$/SourceBranch" "$/TargetBranch"

在这种情况下,更改 162987 和 162967 也将包括在内。

如果您在 Visual Studio 中使用 UI,则合并对话框将阻止您选择多个单独的变更集,除非它们是按顺序排列的。

要将两个单独的变更集合并到另一个分支中,您必须分两步完成: 合并 162489 和 162990(首先合并最旧的变更集,以防两个变更集都包含对相同文件的更改)。

然后目标分支的工作区将包含两个变更集的更改,现在您可以将合并作为目标分支中的一个变更集签入。

【讨论】:

这里有一个问题。如果先合并 162489,则不能合并 162990,除非先签入 162489。 @KirilStanoev 我不相信这一点。你可以合并任何你想要的,只要你分开做就可以了【参考方案2】:

在 TFS 合并帮助中 - http://msdn.microsoft.com/en-us/library/bd6dxhfy(v=VS.100).aspx -,您在第二个示例中看到如何合并一个变更集:

tf merge /version:C137~C137 branch1 branch2 /recursive

这就是你所追求的吗?

【讨论】:

【参考方案3】:

试试这个

tf merge /recursive /version:C162489~C162489 "$/SourceBranch" "$/TargetBranch"
tf merge /recursive /version:C162990~C162990 "$/SourceBranch" "$/TargetBranch"

如果您在这些变更集中没有冲突代码更改,TFS 2010 将合并连续的合并。

【讨论】:

非常感谢!我不知道如果我想合并单个搁置集我还必须将它指定为一个范围(如果我只是给搁置集,它似乎合并了累积的更改)。【参考方案4】:

合并必须以连续的方式进行。在您的情况下,合并两个不连续的变更集是不安全的,因为您可能会丢失可以对相同文件进行的更改。这就是 TFS 客户端不允许您这样做的原因。

【讨论】:

以上是关于如何仅合并两个变更集(TFS)的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个 TFS 标签之间查找变更集(用于发行说明/变更日志)

如何撤消 TFS 中的回滚?

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

为啥用于获取 TFVC 变更集的 TFS Rest API 仅返回 256 个项目?

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

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