Merge 命令

更新:2007 年 11 月

merge 命令将更改从一个分支应用到另一个分支。

说明:

在您执行签入操作之前,此命令的结果不会反映在 Team Foundation 版本控制中。有关更多信息,请参见如何:签入挂起的更改

必需的权限

若要使用 merge 命令,必须将包含合并操作的目的地或目标的工作区文件夹的“签出”权限设置为“允许”。还必须将包含源的工作区文件夹的“读取”权限设置为“允许”。有关更多信息,请参见 Team Foundation Server 权限

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] source destination

参数

参数

说明

versionspec

指定 /version 选项的值,如 C2。有关 Team Foundation 如何分析版本规范以确定哪些项在其范围内的更多信息,请参见命令行语法 (Team System)

source

指定用作合并源的文件或文件夹。

Destination

指定用作合并的目的地或目标的文件或文件夹。

选项

说明

/recursive

匹配当前目录以及任何子文件夹中的 source 项规范。

/force

忽略合并历史记录并将指定的更改从源合并到目标中,即使此前已合并过这些更改的全部或者部分也是如此。

/candidate

输出源中尚未合并到目标的所有变更集的列表。此列表应包括尚未合并的变更集 ID 和有关该变更集的其他基本信息。

/discard

不执行合并操作,但更新合并历史记录以跟踪发生的合并。这会丢弃要用于特定合并的变更集。

/version

对于选择性合并,此选项指定应合并到目的地或目标的范围。对于追加合并,此参数指定应合并哪个版本之前的所有未合并的更改。

对于选择性合并,版本范围表示要合并的变更集的开始点和结束点。例如,如果试图合并版本 4 到版本 6,则合并变更集 4、5 和 6。

/lock

指定锁类型或从项中移除锁。有关更多信息,请参见了解锁定类型

锁定选项:

  • None

    不会将任何锁定放置在项上,且不会从项上移除任何现有锁定。

  • Checkin

    其他用户可以签出指定项,但在您通过执行签入来释放锁之前,他们无法签入对锁定文件的修订。如果任何其他用户已锁定任一指定项,则锁定操作将失败。

  • Checkout

    在您显式释放锁之前,阻止用户签入或签出任何一个指定的项。如果任何其他用户已锁定任何一个指定项,或存在对任何项的现有挂起的更改,则锁定操作将失败。

/preview

显示合并预览。

/baseless

在没有基版本的情况下执行合并。即,允许用户合并没有合并关系的文件和文件夹。执行 baseless 合并之后,合并关系将存在,且以后的合并不必是 baseless 合并。

/nosummary

当执行此操作需要 10 行以上的输出时省略错误和警告摘要。

/noimplicitbaseless

指定 Team Foundation 不在位于两个无关版本控制树中、具有相同相对名称的两个项之间执行隐式 baseless 合并。

/noprompt

取消显示需要您输入的任何提示。

备注

您可以使用 tf 命令行实用工具的 merge 命令将现有源分支中的更改应用到现有的目标分支中。您可以将个别修订或整个变更集合并到目标分支。可以将更改从源合并到目标分支或从目标合并到源分支。

merge 命令还可让您查询源分支中尚未迁移到目标分支的更改。此外,您可以使用它指示永远不将某些更改从源合并到目标,且这些更改不应再显示为合并操作的候选项。

有关如何查找“tf”命令行实用工具的更多信息,请参见 Tf 命令行实用工具命令

Baseless 合并

使用 baseless 合并可以合并不是直接从其他项分支的项。若要执行 baseless 合并,必须使用 tfmerge 命令。在执行 baseless 合并时,Team Foundation 没有分支中各个文件之间关系的任何信息。在 baseless 合并中,必须手动解决冲突。在执行 baseless 合并且解决任何冲突之后,Team Foundation 会记录合并历史记录并在文件夹和文件之间建立关系。

运行 tfmerge 时,Team Foundation 会在位于两个以前相关的版本控制树中、具有相同相对名称的两个项之间执行隐式 baseless 合并。例如,分支 $SRC\ 与 $TGT 相关,您可能希望将这两个分支合并起来。这两个分支中都包含一个名为 a.txt 的无关文件。运行 tf merge 时,Team Foundation 会在这两个 a.txt 文件之间建立关系,但前提是这两个文件相同、禁用了符合 FIPS 的加密而且源文件与目标中的任何其他文件无关。

如果在设置了 /noimplicitbaseless 选项的情况下运行 tf merge,那么,当 Team Foundation 尝试合并这两个分支时,这两个 a.txt 文件会在您尝试签入所做的更改时产生命名空间冲突。若要解决此冲突,必须重命名其中的一个文件。

示例

下面的示例合并 MyFile_beta1 中尚未合并到 MyFile_RTM 的更改。

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

下面的示例仅将变更集 137 中的变更合并到分支 2 中。

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

下面的示例从分支 1 中合并第一个变更集至变更集 137(包括变更集 137)中的所有变更。

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

下面的示例合并变更集 100 至变更集 137(包括变更集 137)中的所有变更。

c:\projects>tf merge /version:C100~137 branch1 branch2 /recursive

下面的示例打印分支 1 中尚未合并到分支 2 的变更集的列表。

c:\projects>tf merge /candidate branch1 branch2 /recursive

下面的示例打印分支 2 中尚未重新合并到分支 1 的变更集的列表。

c:\projects>tf merge /candidate branch2 branch1 /recursive

下面的示例将放弃使用变更集 137 作为合并到分支 2 的候选项。

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive

请参见

任务

演练:高级版本控制功能

如何:解决两个文件之间的冲突

概念

了解分支

参考

命令行语法 (Team System)

Branch 命令

Merges 命令

其他资源

Tf 命令行实用工具命令