Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
Team Foundation 版本控制(TFVC)difference 命令比较(如果可能)显示两个文件、两个文件夹中的文件或架子集和本地或服务器文件之间的差异。
先决条件
| 类别 | 要求 | 
|---|---|
| 权限 | 设置为“允许”的所有指定项的读取权限。 | 
有关详细信息,请参阅 默认 TFVC 权限。
语法
tf diff[erence] itemspec [/version:versionspec] [/type:filetype] 
[/format:format [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] 
[/options][/noprompt][/login:username,[password]]
tf diff[erence] itemspec itemspec2 [/type:filetype] [/format: format] 
[/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] [/shelveset:shelvesetname[;shelvesetowner]] 
shelveset_itemspec [/type:filetype] 
[/format: format] [/ignorespace] [/ignoreeol] [/ignorecase] 
[/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] /configure
参数
参数
参数
说明
<itemspec>
必填。 指定要比较的项。 如果未指定版本或路径,则假定当前工作区版本。 接受本地和 Azure DevOps 服务器路径。
有关 TFVC 如何分析 itemspec 以确定哪些项在范围内的详细信息,请参阅 使用 Team Foundation 版本控制命令。
              difference 命令不支持通配符。
此参数不能与 /shelveset 选项结合使用。
<itemspec2>
自选。 要比较 itemspec 的项。 如果未提供第二个 itemspec,将使用该项的最新 Azure DevOps 服务器版本。
<filetype>
提供 /type 选项的值。 可以指定 binary 或 text 以及代码页编号或代码页的友好名称。
<format>
与 /format 选项一起使用,指定以下类型之一的输出格式:
- Visual
- Brief
- Context
- RCS
- SS
- SS_SideBySide
- SS_Unix
- Unified
- Unix
备注 部分中介绍了这些输出格式。
<versionspec>
              /version 选项的用户提供的值。 有关 TFVC 如何分析版本规范以确定其范围内哪些项的详细信息,请参阅 使用 Team Foundation 版本控制命令。
<shelvesetowner>
按用户名标识货架集的所有者。 如果未提供此参数的值,则假定当前用户。
<shelvesetname>
指定货架集的名称。 只要不同的用户拥有每个货架集,就可以在运行 TFVC 的服务器上创建多个具有相同名称的货架集。
<shelveset_itemspec>
指定要与基本货架集版本进行比较的文件夹或文件的名称。
<username>
为 /login 选项提供值。 可以将用户名值指定为 DOMAIN\username 或 username。
选项
选项
说明
/type
重写任何检测到的编码,并使用指定的编码将文件呈现给差异引擎。
/version
指定要比较的文件或文件夹的版本。 默认情况下,如果未提供 versionspec,TFVC 将使用工作区版本。
你可以通过将分号和版本说明符追加到每个文件名末尾来指定版本,而不是使用 /version 标志。
/format
指定由 format 参数指定的输出格式。
/ignorespace
不突出显示比较文件之间的空格差异。
/ignoreeol
忽略两个文件或文件版本中新行字符之间的差异。 
              /ignoreeol 的工作方式不同于 ignorespace,它处理八个空间与一个空间相同。 但是,如果使用 /ignoreeol 选项,文件 A 在未更改的文本区域之间有两个新行字符,并且 文件 B 有一个,结果将显示为差异。 如果两个文件只有一个新行,但 文件 A 使用 \r\n 作为新行,文件 B 使用 \n,则 /ignoreeol 选项将忽略这一点作为差异。
/ignorecase
不突出显示比较文件之间的字母大小写差异。
/recursive
比较当前文件夹与其所有子文件夹之间的差异。
/options
指定要由 difference调用的工具的选项字符串。 有关详细信息,请参阅 将文件类型与差异工具关联,将文件类型与合并工具关联。
/shelveset
指定要与货架集所基于的 Azure DevOps 服务器版本进行比较的货架集。
此选项不能与 itemspec 参数结合使用。 若要比较单个货架项,可以提供 shelveset_itemspec。
/noprompt
取消在完成此操作期间显示的任何对话框。
/configure
从 Visual Studio 用户界面调用 配置用户工具 对话框。 有关详细信息,请参阅 将文件类型与差异工具关联。
/login
指定使用 TFVC 对用户进行身份验证的用户名和密码。
言论
注意
可以在命令行键入 tf diff 或 tf difference 以运行此命令。
可以使用 difference 命令进行比较,以及是否可能出现以下两者之间的显示差异:
- 同一文件的两个不同的文件或两个版本。 
- 文件夹中的一个或多个项目。 
- 一个、一些或所有项位于 Azure DevOps 服务器上的货架集中。 
可以使用 difference 命令比较版本控制和非版本控制的文件。
TFVC 按类型对所有文件进行分类。 只要这两个文件具有相同的编码,就可以逐行合并和比较文本文件。 如果要比较两个编码不相同的文件,可以使用 /type 选项暂时屏蔽或替代文件的编码属性。
可以比较二进制文件,但无法合并。 将一个或多个二进制文件传递给 difference 命令时,TFVC 指示它与要比较的项之间是否存在差异。 有关 TFVC 如何区分和处理不同类型的文件的详细信息,请参阅 管理文件类型。
如果指定两个文件名,则比较两个文件。 你可以通过将分号和版本说明符追加到每个文件名末尾来指定版本,而不是使用 /version 标志。
如果只向差异命令传递一个 itemspec:
- 如果未提供 - versionspec,则默认情况下,项目的当前工作区版本与基本工作区版本进行比较。 例如,- tf difference header.h将当前版本的 header.h 与 header.h 所基于的版本进行比较。
- 如果在 - versionspec中包含- itemspec(例如- tf difference header.h;LBeta1),TFVC 会将该版本与磁盘上的当前工作区版本进行比较。
- 如果指定一系列版本(如 - /version:C1~C4),则比较范围两个终结点处的文件版本。
有关如何使用 tf 命令行实用工具的详细信息,请参阅 使用 Team Foundation 版本控制命令。
输出格式类型
与 format 选项一起使用的 /format 参数指定许多不同的输出格式。 以下输出类型可用:
- Visual格式类型会打开外部差异应用程序。 默认情况下,将启动 diffmerge.exe。
- Brief格式打印要比较的文件是否不同。
- Context格式为文件中的差异提供上下文行。 此格式派生自基于 UNIX 的- diff -c输出格式。
- RCS格式类似于- /format:unix,但未提供上下文行。 未提供文件末尾缺少行标记端的特殊手法。
- SS是 Visual SourceSafe 的默认差异输出格式。 有关详细信息,请参阅 Diff (命令行)。
- SS_SideBySide是 Visual SourceSafe 的默认并行输出格式。
- SS_Unix类似于- /format:unix输出格式,但- /format:ss_unix包括上下文行和- /format:unix。
- Unified格式派生自基于 UNIX 的- diff -u输出格式。- /format:context在差异字符串之间重复相同的上下文行,但- /format:unified不重复。- 仅当与下一个差异字符串的距离大于上下文行数时, - Unified格式才会生成新的统一差异字符串(- @@ ... @@)行。
- Unix输出类型派生自基于 UNIX 的- diff命令输出格式。- Unix输出格式采用以下方式构造:- <metadataline> "< " line prefix for lines from the first file "---" line "> " line prefix for lines from the second file <metadataline> can be one of these possibilities: #a#,# -- add lines from line # in file1 into file2 at lines #-># #,#d# -- delete lines from line # -> # in file 1 from file2 at line # #,#c#,# -- change lines from line # -> # in file1 into the lines in file2 at line # -> # # signs separated by commas indicate a line range. # signs before the character indicate line numbers in the first file. # signs after the character indicate line numbers in the second file. /// No end of line marker at the end of the file: /// \ No newline at end of file
例子
以下示例显示本地版本的 314.cs 和工作区版本的 314.cs 之间的差异,即从 Azure DevOps 服务器签出的文件版本。
c:\projects>tf difference 314.cs
以下示例显示 src 文件夹中已更改的所有文件,但不显示已在 src子文件夹中更改的文件。
c:\projects>tf difference src /format:visual
以下示例显示更改集 3 和更改集 8 1254.cs之间的差异。
c:\projects>tf difference /version:C3~C8 1254.cs
以下示例显示属于标签  的 release 版本与属于 changeset 3200 的版本之间的差异。
c:\projects>tf difference 314.cs;Lrelease 314.cs;C3200
-或-
c:\projects>tf difference 314.cs;Lrelease~C3200
以下示例显示 e271.cs 版本之间的差异,即名为 Pat 的用户在货架集 PeerCodeReview8 中搁置,以及基于其更改的基本货架版本。 输出还显示用户搁置时 e271.cs 挂起的更改类型。
c:\projects> tf difference /shelveset:PeerCodeReview8;Pat e271.cs
以下示例显示 PeerCodeReview2 货架集中的所有文件与这些文件的基本货架版本之间的差异。
c:\projects> tf difference /shelveset:PeerCodeReview2