使用 Team Foundation 版本控制命令
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
Visual Studio 2019 |Visual Studio 2022
可以使用版本控制命令执行几乎所有Team Foundation 版本控制 (TFVC) 可以在 Visual Studio 中执行的任务。 还可以使用版本控制命令执行一些无法在 Visual Studio 中完成的任务。 若要从命令提示符或脚本中运行版本控制命令,请使用 tf.exe
工具。
运行命令
若要启动 Visual Studio 命令提示符,请在 Windows “开始”屏幕中选择 “VS2022 开发人员命令提示符 ”或更低版本的快捷方式。
注意
对于 Visual Studio 2019 及更高版本, tf.exe
二进制文件不再位于 Visual Studio 安装路径中的固定位置,如某些早期版本(例如 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
)。 如果脚本使用 tf.exe
,请不要根据 Visual Studio 安装路径对文件的路径进行硬编码。
在大多数情况下,在工作区中映射的目录的上下文中运行版本控制命令。 例如, $/SiteApp/Main/
映射到 c:\\code\\SiteApp\\Main\\
。 若要获取工作区中所有项的最新版本,请使用以下命令:
c:\code\SiteApp\Main\SolutionA>tf get
设置开发计算机和管理工作区
工作区是团队代码库的本地副本。 由于它是开发计算机上的本地副本,因此可以在准备好签入工作之前单独开发和测试代码。 下面是用于管理你的工作区的一些命令:
有关详细信息,请参阅以下资源:
开发应用
使用这些命令在版本控制下与你的团队一起开发应用:
- 添加命令:将文件和文件夹添加到版本控制。
- 签出 (或编辑) 命令:签出文件并将其挂起的更改状态更改为 编辑。
- 删除命令 (Team Foundation 版本控制) :从 Azure DevOps 服务器中删除文件和文件夹,并从磁盘中删除它们。
- 获取命令:获取 (从Azure DevOps Server下载一个或多个文件或文件夹的最新版本或指定版本的) 工作区。
- 重命名命令 (Team Foundation 版本控制) :更改文件或文件夹的名称或路径。
- Status 命令:显示有关对工作区或搁置集中文件和文件夹的挂起更改的信息。
- 撤消命令:放弃对文件或文件夹的指定挂起更改。
- Undelete 命令:还原以前删除的项。
有关详细信息,请参阅 在 Team Foundation 版本控制中开发应用。
挂起工作
由于各种原因,有时需要留出部分或全部正在进行的工作。 若要挂起并继续工作以及管理搁置集,请使用以下命令:
有关详细信息,请参阅 暂停工作和管理搁置集。
提交你的工作
checkin
使用 命令将代码签入团队的代码库:
- Checkin 命令:将挂起的文件或文件夹更改签入服务器。
有关详细信息,请参阅 将工作签入团队的代码库。
管理文件并解决问题
使用以下部分中的资源来管理文件。
查看和管理版本控制文件和文件夹
- 属性 (或信息) 命令:显示有关版本控制中的项的信息。
- Dir 命令:显示版本控制服务器的内容。
- 销毁命令 (Team Foundation 版本控制) :永久删除版本控制的文件。
- LocalVersions 命令:显示工作区项的版本。
有关详细信息,请参阅 使用源代码管理资源管理器管理版本控制下的文件。
查看和管理过去的版本
- 更改集命令:更改或显示变更集属性。
- History 命令:显示文件或文件夹的修订历史记录。
- 标签命令 (Team Foundation 版本控制) :附加或删除文件或文件夹中的标签。
- 标签命令:显示有关服务器中使用的标签的信息。
- 回滚命令 (Team Foundation 版本控制) :回滚更改集的效果。
- 取消标签命令:从服务器中的现有标签中删除项。
- 查看命令:检索文件的指定版本并显示它。
有关详细信息,请参阅 查看和管理以前的版本。
比较文件夹和文件
- Difference 命令:比较文件和搁置集之间的差异。
- Folderdiff 命令:比较两个文件夹中文件之间的差异。
有关详细信息,请参阅 查看和管理以前的版本。
解决文件冲突
- Resolve 命令:解决工作区和服务器上的项目之间的冲突。
有关详细信息,请参阅解决Team Foundation 版本控制冲突。
使用版本控制锁
- Lock 命令:锁定或解锁文件和文件夹。
有关详细信息,请参阅 使用版本控制锁。
隔离风险
使用以下命令通过分支隔离风险:
有关详细信息,请参阅使用分支隔离Team Foundation 版本控制中的风险。
管理版本控制
使用以下命令管理版本控制系统:
有关详细信息,请参阅 配置签出设置。
获取有关版本控制命令的帮助
使用以下命令获取有关版本控制命令的详细信息:
了解命令语法
每个命令的语法显示在每个参考文章的顶部。
必需参数和可选参数
不带括号的参数是必需参数。 [括号] 指示完成命令不需要的可选参数。 但是,某些可选参数具有应用于命令的默认值,即使未指定 选项也是如此。
独占参数
当选项由管道 (|) 分隔时,可以指定其中一个选项。
原义和可替换参数
未括在方括号中的项是包含逐字的选项。 用尖括号括起来的项 (< 和 >) 是参数,必须用实际字符替换这些参数才能执行命令。
命令快捷方式和别名
某些命令支持快捷方式。 例如,可以使用 或 tf del
调用 Delete 命令tf delete
。
示例
例如,请考虑 Checkout 命令:
tf checkout [/lock:( none|checkin|checkout)] [/recursive] <item-spec> [/login: <username>, [<password>]]
此示例包含以下参数:
<item-spec>
:必须将此参数替换为标识要签出的项目的 项规范 。- 以下参数是可选的。 如果不提供它们,则其任何效果都不适用于命令:
/lock:(none|checkin|checkout)
:如果未指定/lock
选项,则系统默认使用/lock:none
。 否则,可以指定其他锁定选项之一。/recursive
:如果要以递归方式签出文件夹中的多个项目,则必须逐字指定此选项。/login:<username>, <password>
:如果要以其他用户身份运行命令,则必须逐字指定/login
选项,并将 替换为<username>
用户的名称。 如有必要,请将 替换为<password>
用户的密码。
指定受命令影响的项
可以使用项规范和版本规范来指定受命令影响的项。
使用项规范参数指定受影响的项
使用项规范指定受命令影响的项。 可以在客户端计算机或 Azure DevOps 服务器上指定项。 可以使用通配符,例如 * 和 ?。
客户端项规范参数
客户端项规范参数指定客户端计算机上项的路径,例如:
- 文件夹,例如 ,c:\code\SiteApp\Main\SolutionA\。
- 文件,例如 c:\code\SiteApp\Main\SolutionA\Project1\program.cs。
- 多个文件,例如 c:\code\SiteApp\Main\SolutionA\*.cs。
- 通用命名约定 (UNC) 路径,如 \\myshare\code\SiteApp\Main。
服务器项规范参数
服务器项规范参数指定 Azure DevOps 服务器上项的路径,例如:
- 文件夹,例如 $/SiteApp/Main/SolutionA。
- 文件,例如 $/SiteApp/Main/SolutionA/Project1/program.cs。
- 多个文件,例如 $/SiteApp/Main/SolutionA/*.cs。
需要对不在客户端计算机上的项运行命令时,通常使用服务器项规范参数。 例如,假设你在开发计算机上工作。 如果需要获取有关项目集合中某些项的修订历史记录数据,则可以使用以下命令:
c:\>tf history /collection:https://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive
/noprompt
多个项规范参数
对于某些命令,可以指定多个项规范参数,例如:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
此命令将签出 program.cs 和 program2.c。
使用版本规范参数指定受影响的项版本
使用版本规范指定受命令影响的项的版本。 若要提供版本规范,可以:
/version
使用 选项,例如/version:C44
。使用分号将版本规范追加到项规范,例如
program1.cs;C44
。
使用 “历史记录”命令 或 “差异”命令时,可以通过用波形符分隔版本来指定版本范围,例如:
c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2022~D4/24/2022
使用以下语法指定版本规范:
类型 | 语法 | 说明 | 示例 | 结果 |
---|---|---|---|---|
变更集 | [C]<version-number> |
基于变更集编号指定项。 如果在指定的变更集中未修改范围内的项,则系统将采用在指定变更集之前发生的项的最新版本。 如果仅指定数字,则可以省略 C 。 |
tf get readme.txt /v:C8 tf get readme.txt /v:8 tf get readme.txt;8 |
如果在更改集 8 中修改了 readme.txt ,则示例代码将获取该文件的该版本。 否则,它将获取版本 8 之前 readme.txt 的最新版本。 |
Label | L<label> |
指定应用标签的项。 | tf get readme.txt;LJulyHotFix tf get /version:LLastKnownGood |
第一个示例获取标记为 JulyHotFix 的readme.txt版本。 第二个将检索 (的所有已标记项的版本,并删除工作区中未标记) 的项,因为创建标记为 LastKnownGood 的变更集时存在这些项。 可以将第二个示例中的代码用作 自动生成过程的一部分。 |
日期和时间 | D<yyyy-mm-ddTxx:xx> 或 D<mm/dd/yyyy> 或 .NET Framework 支持的任何格式。 或 在本地计算机上受支持的任何日期格式。 |
指定在特定时间的指定日期创建的变更集。 | tf get /version:D2022-03-22 tf get /version:D2022-03-22T09:00 |
第一个示例更新工作区,使其与 2022 年 3 月 22 日午夜存在的代码库匹配。 第二个更新工作区,使其与 2022 年 3 月 22 日上午 9:00 存在的代码库匹配。 有关.NET Framework支持的日期和时间格式的详细信息,请参阅 DateTime 和标准日期和时间格式字符串。 |
当前工作区 | W |
指定工作区中的版本。 | - | - |
指定的工作区 | W<workspace-name>; <workspace-owner> |
指定已指定工作区中的版本。 | tf get /version:WResolveRIConflicts;PatW |
该示例指定拥有的工作区PatW 中的ResolveRIConflicts 版本。 |
提示 | T |
指定最新版本。 | - | - |
使用选项修改命令的运行方式
你可以使用某些常用选项来修改命令的运行方式。
/noprompt
使用 选项取消数据输入请求和重定向输出数据
/noprompt
使用 选项可禁止对数据输入的请求,并将输出数据重定向到命令提示符窗口。 当需要在脚本中使用版本控制命令时,此选项非常有用::
- 命令无需用户干预即可继续。
- 数据可供脚本对其执行操作,例如分析或捕获。
使用此选项时,系统会执行以下操作:
禁止所有输入请求:
- 命令提示符窗口中不会提出问题。 例如,将 “撤消”命令 与此选项一起使用时,系统不会提示确认是否要撤消更改。
- 不显示 Windows 和对话框。 例如,可以将此选项与 Checkin 命令一起使用。 系统不显示“Check In”对话框,用于确认项目和关联的工作项。 相反,系统会在不确认的情况下签入项目。
将输出数据重定向到命令提示符。 例如,可以将此选项与 “历史记录”命令一起使用。 数据显示在命令提示符窗口中,而不是“ 历史记录”窗口。
/login
使用 选项指定凭据
/login
使用 选项指定要运行命令的 Azure DevOps 服务器用户帐户。 使用另一个团队成员的计算机时,此选项非常有用。
例如,假设你在团队成员的开发计算机上工作。 使用 Lock 命令 解锁之前锁定的文件:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>,<password>
如果要避免在命令提示符中显示密码,可以输入命令而不输入密码:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>
输入此命令后,系统会提示你在屏蔽输入的对话框中输入密码。
/lock
使用 选项应用或删除锁
重要
最佳做法是,请谨慎使用 /lock
选项。 告知团队成员锁定项目的原因以及何时计划删除锁。
/lock
使用 选项在运行另一个命令(如“添加”或“编辑”)的同时应用或删除锁。
/lock:(none|checkin|checkout)
命令 /lock
使用以下选项:
None
:未对项进行锁定。 如果锁定已到位,则会将其删除。Checkin
或Checkout
:应用锁。 有关详细信息,请参阅 了解锁类型。
注意
在极少数情况下,锁定操作可能会失败:
- 如果任何其他用户锁定了任何指定的项,锁定操作将失败。
- 如果已存在对指定项的挂起更改,系统将忽略此开关。 在这种情况下,必须使用 Lock 命令 更改项的锁。
使用选项快捷方式
可缩写以下选项。
选项
选项别名
/comment
-C
/computer
-M
/delete
-D
/force
-P
/format
-F
/help
-?, -H
/lock
-K
/login
-Y
/newname
-N
/noprompt
-I
/owner
-O
/recursive
-R
/server
-S
/slotmode
-X
/template
-T
/user
-U
/version
-V
/workspace
-W
了解退出代码
版本控制命令将返回以下退出代码:
退出代码
定义
0
成功。
1
部分成功。 至少有些事,或者可能一切,都没能成功。
2
无法识别的命令。
100
全部失败。
例如,假设运行以下命令:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
如果尝试签出的文件之一在服务器上不存在,该命令将返回 1 以指示部分成功。