使用 Team Foundation 版本控制命令
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
Visual Studio 2022 |Visual Studio 2019 |Visual Studio 2017 |Visual Studio 2015 |Visual Studio 2013
可以使用版本控制命令执行几乎可以在Visual Studio中执行的所有任务,以及Visual Studio中无法完成的多个任务。 可以使用 tf.exe 工具从命令提示符或脚本中运行版本控制命令。
运行命令
若要启动Visual Studio命令提示符,请从Windows"开始"菜单,选择 VS2019 或更低版本的开发人员命令提示符快捷方式。
注意
对于 Visual Studio 2017 及更高版本,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 版本控制,创建和使用工作区
开发应用
使用这些命令在版本控制下与你的团队一起开发应用:
- 添加命令:将文件和文件夹添加到版本控制。
- 签出 (或编辑) 命令:签出文件并将其挂起的更改状态更改为“编辑”。
- 删除命令 (Team Foundation 版本控制)
- 获取命令:获取 (下载) 从Team Foundation Server到工作区的最新或指定版本的一个或多个文件或文件夹。
- 重命名命令 (Team Foundation 版本控制)
- Status 命令:显示有关一个或多个工作区或货架集中文件和文件夹项挂起更改的信息。
- 撤消命令:放弃对文件或文件夹的一个或多个挂起更改。
- 取消删除命令
另请参阅: 在 Team Foundation 版本控制中开发应用
挂起工作
出于多种原因,有时需要搁置部分或所有进行中的工作。 若要挂起并继续工作以及管理搁置集,请使用以下命令:
另请参阅: 暂停工作和管理货架集。
提交你的工作
使用 checkin 命令将代码签入到团队的代码库:
- 签入命令:签入对服务器的文件或文件夹的挂起更改。
另请参阅: 签入团队代码库的工作
管理文件并解决问题
查看和管理版本控制文件和文件夹
另请参阅: 使用源代码管理资源管理器管理版本控制下的文件
查看和管理过去的版本
- Changeset 命令
- History 命令:显示一个或多个文件或文件夹的修订历史记录。
- Label 命令 (Team Foundation 版本控制)
- 标签命令
- 回滚命令 (Team Foundation 版本控制)
- 取消标记命令
- View 命令
另请参阅: 查看和管理过去的版本
比较文件夹和文件
另请参阅: 查看和管理过去的版本
解决文件冲突
另请参阅:解决Team Foundation 版本控制冲突。
使用版本控制锁定
另请参阅: 使用版本控制锁。
隔离风险
使用以下命令以利用分支隔离风险:
另请参阅:使用分支隔离Team Foundation 版本控制中的风险。
管理版本控制
使用以下命令管理版本控制系统:
另请参阅: 配置签出设置。
获取有关版本控制命令的帮助
使用以下命令获取有关版本控制命令的详细信息:
了解命令语法
每个命令的语法都将显示在每个参考主题的顶部。
必需参数和可选参数
不带括号的参数是必需参数。 [括号] 指示不需要完成命令的可选参数。 但是,某些可选参数具有适用于该命令的默认值,即使未指定该选项也是如此。
独占参数
当选项由管道 () | 分隔时,可以指定其中一个选项。
原义和可替换参数
粗体项是包括原义的选项。 斜体 项是必须替换为实际字符才能执行命令的参数。
命令快捷方式和别名
某些命令支持快捷方式。 例如,可以使用 tf delete 或 tf del 调用 Delete 命令。
示例
例如, “签出”命令:
tf checkout [/lock:( none|checkin|checkout)] [/recursive] itemspec [/login: username,[ password]]
让我们来查看此示例中的参数:
itemspec:必须将此参数替换为一个 itemspec ,用于指定要签出的项目。
/lock: (none|checkin|checkout) :不需要指定 /lock 选项。 如果未指定,则系统默认指定 /lock:none。 否则,你可以指定锁定选项之一。
以下参数是可选参数,如果未提供这些参数,则其效果都不适用于该命令:
/递归:如果要以递归方式签出文件夹中的多个项目,则必须指定此选项逐字显示。
/login:username,password:如果要以其他用户身份运行该命令,则必须指定 /login 选项逐字输入,将 用户名 替换为用户名,如有必要,可以提供密码。
指定受命令影响的项
你可以使用 itemspecs 和 versionspecs 指定受命令影响的项。
使用 itemspec 参数指定受影响的项
使用 itemspec (项规范) 指定受命令影响的项。 你可以在客户端计算机上或你的 Team Foundation Server 上指定项。 可以使用通配符,例如 \* 和 ?。
客户端 itemspec 参数
客户端 itemspec 参数指定客户端计算机上项的路径, (例如 c:\code\SiteApp\Main\SolutionA\) 文件 (,例如 c:\code\SiteApp\Main\SolutionA\Project1\program.cs 或多个文件 (c:\code\SiteApp\Main\SolutionA\*.cs。 还可以指定 UNC 路径,例如 \\myshare\code\SiteApp\Main。
服务器 itemspec 参数
服务器 itemspec 参数指定Team Foundation Server上项的路径, (例如 $/SiteApp/Main/SolutionA) 文件 ($/SiteApp/Main/SolutionA/Project1/program.cs 或多个文件 (例如 $/SiteApp/Main/SolutionA/*.cs。
当需要在项(而非客户端计算机)上运行命令时,通常使用服务器 itemspec 参数。 例如,你正在开发计算机上工作,需要获取一些关于项目集合中某些项的修订历史记录数据,这些项不起作用:
c:\>tf history /collection:http://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive
/noprompt
多个 itemspec 参数
对于某些命令,可以指定多个 itemspec 参数。 例如:
c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c
签出 program.cs 和 program2.c。
使用 versionspec 参数指定项的受影响版本
使用 versionspec (版本规范) 指定受命令影响的项的版本。 若要提供 versionspec ,可以:
使用 /version 选项。 例如: /version:C44。
将 versionspec 附加到 itemspec,并使用分号分隔。 例如: program1.cs;C44.
使用 历史记录命令 或 差异命令时,可以通过将版本与平铺分隔 (~) 来指定一系列版本。 例如:
c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2012~D4/24/2012
使用以下语法指定 versionspec。
类型
语法
说明
变更集
[C]n
基于变更集编号指定项。 如果未在指定的变更集中修改范围内的项,系统将采用在指定的变更集之前发生的最新版本的项。
提示
如果只指定数字,则可以省略 C 。 示例
c:\code\SiteApp\Main>tf get readme.txt /v:C8
c:\code\SiteApp\Main>tf get readme.txt /v:8
\- 或 -
c:\code\SiteApp\Main>tf get readme.txt;8
如果 readme.txt 已在变更集 8 中进行修改,则获取该版本的文件。 否则,获取低于版本 8 的最新版本的 readme.txt。
Label
Llabel
指定应用 标签 的项目。
示例
c:\code\SiteApp\Main>tf get readme.txt;LJulyHotFix
获取标记为 JulyHotFix 的readme.txt版本。
c:\code\SiteApp\Main>tf get /version:LLastKnownGood
检索所有已标记项的版本 (,并删除工作区中未标记为) 的项,因为它们在创建标记为 LastKnownGood 的变更集时存在,例如,可能是自动化生成过程的一部分。
日期和时间
Dyyyy-mm-ddTxx:xx
-或-
Dmm/dd/yyy
-或-
.NET Framework 支持的任何格式。
-或-
在本地计算机上受支持的任何日期格式。
指定在特定日期和时间创建的变更集。
示例
c:\code\SiteApp\Main>tf get /version:D2004-03-22
更新工作区以匹配于 2004 年 3 月 22 日 00:00(午夜)存在的基本代码。
c:\code\SiteApp\Main>tf get /version:D2004-03-22T09:00
更新工作区以匹配于 2004 年 3 月 22 日 09:00(上午 9 点)存在的基本代码。
有关支持.NET Framework日期和时间格式的详细信息,请参阅 DateTime 和标准日期和时间格式字符串。
工作区(当前)
W
指定工作区中的版本。
工作区(已指定)
Wworkspacename;workspaceowner
指定已指定工作区中的版本。
例如: WResolveRIConflicts;PeterW
提示
T
指定最新版本。
使用选项修改命令的运行方式
你可以使用某些常用选项来修改命令的运行方式。
使用 /noprompt 选项以禁止数据输入请求并将输出数据重定向到命令提示符窗口
使用 /noprompt 选项取消对数据输入的请求,并将输出数据重定向到命令提示符窗口。 当你需要在脚本中使用版本控制命令时,此选项很有用,因为该命令会在用户不进行干预的情况下继续运行,并且该数据可供脚本执行诸如分析或捕获等操作。
使用此选项时,系统会执行以下操作:
禁止所有输入请求:
不会在命令提示符窗口中提问。 例如,使用此选项的 “撤消”命令 时,系统不会提示你确认是否继续撤消更改。
此时不会显示窗口和对话框。 例如,将此选项用于 Checkin 命令。 系统不显示“ 签入 ”对话框,而不是显示选项, (要签入哪些项目或要关联哪些工作项) ,系统继续签入而不进行确认。
将输出数据重定向到命令提示符。 例如,将此选项用于 History 命令。 数据显示在命令提示符窗口中,而不是 “历史记录”窗口。
使用 /login 选项以在运行命令时指定凭据
使用 /login 选项指定Team Foundation Server用户帐户以运行命令。 当你在其他团队成员所在的计算机上进行工作时,此选项很有用。
例如,Julia 正在 Peter 的开发人员计算机上与其协同工作。 她使用 Lock 命令 解锁之前锁定的文件:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:JuliaI,JuliaPassword
如果想要避免在命令提示符中显示密码,则可以输入该命令,但不输入密码:
c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:JuliaI
在输入此命令后,系统随后会提示她在隐藏其输入的对话框中键入密码。
使用 /lock 选项以应用或删除锁定
重要
作为最佳做法,请随意使用 /lock 选项,并通知团队成员锁定项的原因,以及计划删除锁定时。
使用 /lock 选项在运行其他命令(如 添加 或 编辑)的同时应用或删除锁。
/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
/递归
-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 以指示部分成功。