使用源代码管理搁置集
搁置功能使您可以暂时保留一批挂起的更改,并可以选择从工作区中移除这些挂起的更改。搁置集是搁置操作的结果。可以在以后将搁置集中的更改还原到您的工作区或其他用户的工作区。
变更集和搁置集之间的区别
当您在工作区中签入一个或多个挂起的更改时,Team Foundation 会在源代码管理服务器中创建一个变更集。变更集是一组源文件修订、签入说明、注释以及指向关联工作项的链接。与之类似,搁置集是一组源文件修订、签入说明、注释和关联工作项列表。但搁置集不包含已提交文件更改及版本化的文件的更改的集合。搁置集和变更集都存储在 Team Foundation 服务器中,并且具有足够权限的任何用户都可以将其检索到工作区中。
变更集和搁置集之间的其他区别:
- 与变更集不同,搁置集是非版本化的实体。如果您或其他用户取消搁置某一搁置集中包含的项、编辑若干文件、重新搁置该搁置集这一系列操作,则 Team Foundation 不会为用于以后比较的目的而创建这些项的新版本,并且不维护谁、何时或采用哪种方式修订这些项的记录。原始搁置集将被完全替换。
- 可以删除搁置集但不能删除变更集。
- 可以将变更集链接到某一工作项,以便当用户在该工作项窗体的"链接"选项卡上单击该变更集的链接时,自动将该变更集检索到当前工作区中。搁置集不支持此功能。
- 您可以通过创建和强制执行签入策略来禁止用户创建不符合已制定的团队标准的变更集,或者至少强烈建议用户不要这样做。搁置集不支持此功能。
搁置的用途
在您未准备好或者无法签入一组挂起的更改时,可以搁置挂起的更改。主要有以下五种搁置方案:
- 中断 当您所具有的挂起的更改未准备好签入但您需要从事其他任务时,可以搁置这些挂起的更改以保留它们。
- 集成 当您所具有的挂起的更改未准备好签入但您需要与其他团队成员共享这些更改时,可以搁置这些挂起的更改并让您的团队成员对它们取消搁置。
- 评审 当您所具有的挂起的更改已准备好签入并且必须经过代码评审时,可以搁置这些更改并通知该搁置集的代码审阅者。
- 备份 当您正在做的工作要执行备份但未准备好签入时,可以搁置您的更改并将其保留在 Team Foundation 服务器上。
- 移交 当您正在做的工作要由其他团队成员完成时,可以搁置您的更改以便更容易地进行移交。
创建搁置集
从源代码管理资源管理器、"挂起的更改"窗口或菜单创建搁置集。有关如何创建搁置集的更多信息,请参见 如何:搁置和取消搁置挂起的更改。
虽然您可以通过使用 Get 命令将变更集还原到工作区,但必须使用 Unshelve 命令 才能还原搁置集。可以使用"挂起的更改"窗口中的"取消搁置"按钮将搁置集中的一个、一些或所有挂起的更改还原到工作区。有关"挂起的更改"窗口的更多信息,请参见 如何:签入挂起的更改。在使用 Visual Studio 对搁置集内的所有更改执行取消搁置操作以将其还原到工作区时,与这些项关联的挂起的更改信息也将还原到"挂起的更改"窗口。有关更多信息,请参见 如何:搁置和取消搁置挂起的更改。
在对搁置集执行取消搁置操作时,只要已搁置的修订不与工作区中已挂起的更改发生冲突,Team Foundation 就会将每个修订作为挂起的更改还原到目标工作区。
- 编辑 Team Foundation 将源工作区版本的内容复制到目标工作区版本,并签出该文件以进行编辑。
- 删除 在目标工作区中删除源工作区中处于挂起的签入状态的已删除的搁置文件和文件夹。
- 添加 将源工作区中处于挂起的签入状态的已添加到源代码管理的搁置文件和文件夹添加到目标工作区。
- 重命名和移动 重命名源工作区中已重命名或移动的搁置文件和文件夹,并移至它们在目标工作区中的新文件夹。
要点 |
若要对某一项执行取消搁置操作,目标工作区中不能包含与该项有关的挂起的修订。 |
可以使用 Visual Studio 中的 Unshelve 命令或从命令行使用 Difference 命令 将搁置集中的一个、一些或所有已搁置的文件修订与该搁置集的基版本进行比较,而该版本是该项所基于的服务器版本。有关更多信息,请参见 如何:显示两个文件或文件版本之间的差异。
与变更集不同(它们将永久地存储在源代码管理服务器中),您可以从服务器中删除搁置集。
警告 |
与已删除的文件不同,搁置集将被永久删除,但您不能从源代码管理中检索它。 |
有关如何使用 Visual Studio 删除搁置集的更多信息,请参见 如何:删除搁置集。有关使用命令行接口删除搁置集的更多信息,请参见 Shelve 命令。
解释如何搁置和对搁置集取消搁置。
描述用于在 Team Foundation 源代码管理 中查找搁置集的过程。
解释在查看与搁置集关联的详细信息时必须遵循的步骤。
描述用于删除搁置集的步骤。
参考
相关章节
列出研究使用源代码管理、自定义源代码管理签入以及从命令行使用源代码管理等操作的演练。