Merge 命令

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

提示

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

必需的权限

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

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

参数

参数

说明

versionspec

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

source

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

destination

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

username

/login 选项提供值。 可以按域\用户名或用户名的格式指定用户名值。

选项

说明

/recursive

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

/force

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

/candidate

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

/discard

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

/version

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

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

/lock

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

锁定选项:

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

  • Checkin

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

  • Checkout

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

/preview

显示合并预览。

/baseless

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

注意注意
Baseless 合并不能删除目标中的文件。您可以手动执行此类更改。

/noimplicitbaseless

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

/nosummary

忽略冲突、错误和警告的摘要。

/noprompt

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

/conservative

将一个分支合并到另一个分支时更多冲突中的结果。

/format

指定汇总合并冲突的格式:

  • Brief: 默认值,仅汇总冲突、警告和错误的总数。

  • Detailed:不仅汇总了冲突、警告和错误的总数,还列出了有关每个冲突的详细信息。

注意:此选项仅当输出中包含冲突摘要时才适用。 如果使用 /nosummary 选项或合并引起少于 10 个冲突、警告和错误,则无法显示摘要。

/login

指定用于在 Visual Studio Team Foundation Server 中验证用户身份的用户名和密码。

备注

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

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

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

Baseless 合并

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

运行 tf merge 时,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

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

c:\projects>tf merge /version:C137 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

请参见

任务

解决两个文件之间的冲突

参考

命令行语法(版本控制)

Branch 命令

Merges 命令

其他资源

Tf 命令行实用工具命令

分支和合并