Shelve 命令(Team Foundation 版本控制)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Team Foundation 版本控制 (TFVC) shelve 命令可在 Azure DevOps Server 上存储一组挂起的更改,以及挂起的签入说明、注释和关联工作项列表,而无需实际签入它们。

先决条件

若要使用 shelve 命令删除搁置集,则必须是搁置集所有者,或者必须将 “管理搁置的更改”权限设置为“允许”。 有关详细信息,请参阅默认 TFVC 权限

语法

tf shelve  [/replace] [/comment:("comment"|@commentfile)] [shelvesetname] [/validate][/noprompt] [/login:username,[password]]
tf shelve [/move] [/replace] [/comment:("comment"|@commentfile)] 
[/recursive] [shelvesetname] itemspec [/validate] [/noprompt] [/login:username,[password]]
tf shelve /delete shelvesetname[;owner] [/login:username,[password]] [/collection:TeamProjectCollectionUrl]

参数

参数

Argument 说明
<commentfile> 指定文件的文件系统路径,你应从中读取搁置集的注释。
<comment> 指定搁置集的注释。
<itemspec> 标识要搁置的文件或文件夹。 默认情况下,如果未指定此参数,则当前工作区中所有挂起的更改都将被搁置。 若要详细了解 Team Foundation 如何分析 itemspec 以确定哪些项在范围内,请参阅使用选项修改命令的运行方式
<shelvesetname> 指定可用于从 Azure DevOps Server 检索搁置集的名称。 可以指定 shelvesetnameowner 的现有组合,但前提是也指定了 /replace

必须提供此参数的值。
<owner> 按用户名标识搁置集的当前所有者或预期所有者。 默认情况下,会为当前用户分配搁置集的所有权(如果未指定)。
<username> /login 选项提供值。 可将用户名的值指定为 DOMAIN\usernameusername
<TeamProjectCollectionUrl> 包含要搁置的文件或文件夹的项目集合的 URL,例如 http://myserver:8080/tfs/DefaultCollection/

选项

选项 说明
/new 每个挂起的更改的选中状态(如 Visual Studio“签入”对话框中所示)、注释、关联的工作项、签入说明和签入策略重写原因将作为挂起的更改存储在开发计算机上,直到你将其签入。 /new 选项可在你签入之前清除此签入元数据。
/move 在搁置操作成功后,从工作区中移除挂起的更改。
/replace 替换具有你指定的相同名称和所有者的现有搁置集。
/delete 删除指定的搁置集。 只有 /server 选项可以与此选项结合使用。 如果不包含 /noprompt 选项,则指定 /delete 选项时会显示一条确认消息。
/comment 添加用于描述搁置的更改的指定注释。
/recursive 搁置指定搁置集文件夹中的所有项、其子文件夹以及其中的所有项(如果提供的 itemspec 是一个文件夹)。
/noprompt 禁止显示输入的任何提示。
/validate 此选项在“搁置 - 源文件”对话框打开时选中“在搁置之前评估策略和签入说明”复选框。 选中“验证”复选框后,对话框将评估签入策略,并验证是否需要填写签入说明。 当其他人将更改移交以供评审和检查时,此选项非常有用。 与 /noprompt 结合使用时无效。
/login 指定用户名和密码,以便使用 Azure DevOps Server 对用户进行身份验证。
/collection 指定项目集合。

注解

tf 命令行实用程序的 shelve 命令在 Azure DevOps Server 上备份挂起的更改、关联工作项列表、进行中的签入说明和搁置集中的注释。 搁置集与未提交到服务器的变更集非常类似。 与变更集一样,任何具有足够权限的用户都可以将搁置集从服务器检索到本地工作区。

搁置是签入尚未充分测试的挂起的更改的一种替代方法。 如果要中断工作以执行以下操作,请使用搁置:

  • 与其他开发人员或测试人员共享一组本地工作文件,而不签入对版本控制服务器所做的更改。

  • 暂时搁置一组挂起的更改,而不签入这些更改,以便处理优先级更高的问题。 完成优先级较高任务的工作后,可使用 Unshelve 命令还原搁置的更改。

如果包含 /move 选项,shelve 命令会将每个搁置文件修订版回滚到从服务器检索到当前工作区的最近一个基础工作区版本。 具体而言,对于搁置的所有项,/move 选项:

  • 使用 Undo 撤消搁置的更改。 系统将从工作区中删除属于挂起的添加项的文件。

  • 将存在挂起版本的所有文件的基础工作区版本从服务器检索到当前工作区。

  • 将当前工作区中的所有项标记为只读。

如果包含 /delete 选项,TFVC 会从 Azure DevOps Server 中永久移除指定的搁置集。

有关如何使用 tf 命令行实用工具的详细信息,请参阅使用 Team Foundation 版本控制命令

示例

以下示例在 Azure DevOps Server 上创建一个名为 Reflector_BuddyTest 的新搁置集,向用户 Pat 分配所有权,将当前工作区中的所有项返回到在上次 get 操作期间下载的最新版本,并设置只读状态:

c:\projects> tf shelve Reflector_BuddyTest;Pat /move

以下示例从服务器中删除现有搁置集 new-feature,以该名称创建新搁置集,并在当前工作区中保留所有挂起的更改:

c:\projects> tf shelve new-feature /replace

下面的示例创建一个名为 HelloWorld_TestMe 的搁置集,其中包含对 C:\projects 工作文件夹及其子文件夹中所有 .cs 文件的所有挂起的更改:

c:\projects> tf shelve HelloWorld_TestMe c:\projects\*.cs /recursive

下面的示例删除 HelloWorld_24 搁置集:

c:\projects> tf shelve HelloWorld_24 /delete