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 |
指定锁类型或从项中移除锁。有关更多信息,请参见了解锁定类型。 锁定选项:
|
/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