合并命令 (Team Foundation 版本控制)
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
tf merge
命令在 Team Foundation 版本控制(TFVC)中将更改从一个分支应用到另一个分支。
注意
执行签入操作之前,此命令的结果不会反映在 Azure DevOps 服务器中。 有关详细信息,请参阅 开发代码和管理挂起的更改。
先决条件
若要使用 merge
命令,请将 签出 权限设置为 允许 包含 destination
的工作区文件夹,并将 读取 权限设置为“允许 包含 source
的工作区文件夹。 有关详细信息,请参阅 默认 TFVC 权限。
语法
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
。 有关 TFVC 如何分析版本规范以确定其范围内哪些项的详细信息,请参阅 使用 Team Foundation 版本控制命令。
<source>
指定要充当合并源的文件或文件夹。
<destination>
指定要充当合并目标的文件或文件夹。
<username>
为 /login
选项提供值。 可以将 username
值指定为 DOMAIN\username
或 username
。
选项
选项
说明
/recursive
匹配当前目录和任何子文件夹中 source
项规范。
/force
忽略合并历史记录并将源中的指定更改合并到目标,即使以前合并了其中一些或全部更改。
/candidate
打印源中尚未合并到目标中的所有更改集的列表。 该列表应包含尚未合并的变更集 ID 以及有关该变更集的其他基本信息。 给定结果的星号表示它已部分合并,这意味着更改集中的某些更改已合并,并且尚未合并其他更改。
/discard
不执行合并操作,但更新合并历史记录以跟踪合并发生。 这会放弃用于特定合并的变更集。
/version
对于选择性合并,此选项指定应合并到目标的区域。 对于跟进合并,此参数指定所有未合并更改之前应合并的版本。
对于选择性合并,版本范围表示要合并的更改集的起点和终点。 例如,如果尝试合并版本 4~6
,则合并更改集 4、5 和 6。
/lock
指定锁类型或从项中删除锁。 有关详细信息,请参阅 了解锁类型。
锁定选项:
None
:不对项放置锁,并从项中删除任何现有锁。Checkin
:其他用户可以签出指定的项目,但在通过执行签入释放锁定之前,他们无法签入锁定文件的修订。 如果任何其他用户锁定了任一指定项,则锁定操作将失败。Checkout
:在显式释放锁之前,阻止用户签入或签出任何一个指定项。 如果任何其他用户锁定了任一指定项,或者存在针对任何项的现有挂起更改,则锁定操作将失败。
/preview
显示合并的预览。
/baseless
执行没有基本版本的合并。 也就是说,允许用户合并没有合并关系的文件和文件夹。 在无基合并之后,存在合并关系,并且将来的合并不必是无基的。
注意
无基合并不能删除目标中的文件。 可以手动执行此类更改。
/noimplicitbaseless
指定 TFVC 不会在两个不相关的版本控制树中具有相同相对名称的两个项之间执行隐式无底合并。
/nosummary
省略冲突、错误和警告的摘要。
/noprompt
禁止显示输入的任何提示。
/conservative
将一个分支合并到另一个分支时,会导致更多冲突。
/format
指定汇总合并冲突的格式:
-
Brief
(默认值):仅汇总冲突、警告和错误的总数。 -
Detailed
:不仅汇总了冲突、警告和错误的总数,还列出了每个冲突的详细信息。
注意
仅当输出包含冲突摘要时,此选项才适用。 如果使用 /nosummary
选项或合并导致不到 10 个冲突、警告和错误,则无法显示摘要。
/login
指定使用 Azure DevOps 对用户进行身份验证的用户名和密码。
言论
可以使用 tf
命令行实用工具的 merge
命令将现有源分支中的更改应用到现有目标分支。 可以将单个修订或完整的变更集合并到目标分支。 可以将源中的更改合并到目标分支,也可以从目标合并到源分支。
使用 merge
命令还可以查询尚未迁移到目标分支的源分支中的更改。 该命令还允许你指示某些更改永远不会从源合并到目标,不应再显示为合并操作的候选项。
有关如何使用 tf
命令行实用工具的详细信息,请参阅 使用 Team Foundation 版本控制命令。
无基合并
使用无基合并合并合并不直接相互分支的项。 若要执行无基合并,必须使用 tf merge
命令。 执行无基合并时,TFVC 没有有关分支中文件关系的任何信息。 在无基合并中,必须执行手动冲突解决。 执行无基合并并解决任何冲突后,TFVC 会记录合并历史记录并在文件夹和文件之间建立关系。
运行 tf merge
时,TFVC 会在两个以前相关的版本控制树中具有相同相对名称的项之间执行隐式无基合并。 例如,你可能想要合并相关分支 $SRC
和 $TGT
。 这两个分支都包含名为 a.txt的不相关文件。 运行 tf merge
时,如果两个文件相同,则 TFVC 会在两个 a.txt 文件之间建立关系,并且禁用符合 FIPS 的加密,并且源文件与目标中的其他文件无关。
如果使用 /noimplicitbaseless
选项集运行 tf merge
,当 TFVC 尝试合并两个分支时,两个 a.txt 文件会在尝试签入更改时创建命名空间冲突。 若要解决冲突,必须重命名其中一个文件。
例子
以下示例合并了尚未合并到 MyFile_RTMMyFile_beta1 的更改。
c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive
以下示例将 changeset 137 合并到 branch2。
c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive
以下示例将所有变更集合并为 137 更改为 branch2。
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
以下示例打印 branch1 中尚未合并到 branch2中的更改集的列表。
c:\projects>tf merge /candidate branch1 branch2 /recursive
以下示例打印 Branch2 中尚未合并到 branch1中的更改集列表。
c:\projects>tf merge /candidate branch2 branch1 /recursive
以下示例放弃变更集 137 作为合并到 branch2的候选项。
c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive
以下示例将放弃所有变更集(更改为 changeset 137)作为合并到 branch2的候选项。
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive