将文件添加到版本控制服务器

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

Visual Studio 2019 | Visual Studio 2022

使用 Visual Studio 解决方案资源管理器且项目受版本控制时,将文件添加到版本控制的操作通常是自动执行的。 但在某些情况下,必须执行额外的步骤才能将文件和项目添加到版本控制。

先决条件

在 Visual Studio 中将文件添加到版本控制之前,请在开发计算机上设置工作区

重要

仅当使用本地工作区时,这些过程才适用。 使用本地工作区时,系统会将新文件自动检测为挂起的更改。 相反,保存在服务器工作区中的文件会添加并签入,而不会显示为挂起的更改。

在版本控制下创建新的代码项目和解决方案

可以创建新的 Visual Studio 项目并将其添加到版本控制,让你和团队可以从编写第一行代码开始就立即享受版本控制带来的所有好处。

  1. 在 Visual Studio 中,连接到 Azure DevOps 项目

  2. 选择“文件”>“新建项目”,或按 Ctrl+Shift+N。

  3. 在“创建新项目”屏幕上,选择要创建的代码项目类型,然后选择“下一步”。

    “创建新项目”对话框的屏幕截图。

  4. 在“配置新项目”屏幕的“项目名称”下,输入项目的名称。

  5. 在“位置”下,在设置开发计算机时创建的工作区中指定本地工作文件夹的路径,例如 c:\code\SiteApp\Main\,。

  6. 保留其余设置,然后选择“下一步”。

    “配置新项目”对话框的屏幕截图。

  7. 在“其他信息”屏幕上,根据需要更改任何设置,然后选择“创建”。

  8. 创建项目后,请在解决方案资源管理器中查看它,按 Ctrl+Alt+L 可打开该项目。

    解决方案资源管理器中新代码项目的屏幕截图

  9. 右键单击解决方案资源管理器中的解决方案名称,然后从上下文菜单中选择“将解决方案添加到源代码管理”。

  10. 切换到“团队资源管理器”窗口,然后选择“签入”以将项目签入源代码管理

将现有解决方案和代码项目置于版本控制下

若要将现有解决方案添加到版本控制,应将所有的解决方案文件移入工作区,然后将它们添加到 Visual Studio 中。

  1. 在 Visual Studio 中,连接到 Azure DevOps 项目

  2. 选择“视图”>“其他窗口”>“源代码管理器”。

  3. 在源代码管理器中,导航到解决方案的逻辑父文件夹,例如 $/SiteApp/Main,其中 SiteApp 是项目的名称。 若要详细了解如何命名本地文件夹,请参阅优化文件夹名称

  4. 选择“本地路径”旁边窗口顶部的链接,在 Windows 文件资源管理器中打开父文件夹。 如果链接显示“未映射”,请参阅创建和使用工作区了解有关映射工作区的信息。

  5. 在文件资源管理器中,将包含解决方案的文件夹移动到父文件夹中。

  6. 在 Visual Studio 中,选择“文件”>“打开项目”,导航到解决方案并将其打开。

  7. 在解决方案资源管理器中,右键单击解决方案名称,然后从上下文菜单中选择“将解决方案添加到源代码管理”。

  8. 再次右键单击解决方案名称,然后从上下文菜单中选择“签入”。

  9. 在团队资源管理器的“挂起的更改”页上,如果在“排除的更改”部分中看到“检测到”链接,请选择该链接。

  10. “提升候选更改”对话框列出了未被解决方案中的任何代码项目引用的文件。 选择要签入的任何文件,取消选择任何不想签入的文件,然后选择“提升”将所选文件移到“包含的更改”中。 如果不想签入任何列出的文件,请选择“取消”关闭对话框。

  11. 选择“签入”。

有关详细信息,请参阅提交挂起的更改

将一个或多个文件添加到版本控制

在 Visual Studio 解决方案资源管理器中向代码项目添加文件时,系统会自动将该文件添加到版本控制。 也可添加未被代码项目引用的文件。

自动将一个或多个文件添加到版本控制

  1. 在 Visual Studio 中,连接到 Azure DevOps 项目

  2. 选择“视图”>“其他窗口”>“源代码管理器”。

  3. 在源代码管理器中,导航到要在其中添加文件或文件夹的文件夹。

  4. 选择“源代码管理器”窗口顶部“本地路径”旁边的链接,在 Windows 文件资源管理器中打开目标文件夹。 如果链接显示“未映射”,请参阅创建和使用工作区以及映射工作区。

  5. 在文件资源管理器中,将文件或文件夹移到目标文件夹中。

  6. 在 Visual Studio 团队资源管理器的“挂起的更改”页上,如果在“排除的更改”下看到“检测到”链接,请选择该链接。

  7. 在“提升候选更改”对话框中,仅选择要签入的文件,然后选择“提升”。 如果不想签入任何列出的文件,请选择“取消”。

  8. 选择“签入”。

有关详细信息,请参阅提交挂起的更改

将文件手动添加到版本控制

您还可以将文件手动添加到版本控制。

  1. 在 Visual Studio 中,选择“视图”>“其他窗口”>“源代码管理器”。

  2. 在源代码管理器中,导航到要在其中添加文件的文件夹。

    重要

    确保已签入此文件夹。 如果创建新文件夹,请右键单击它并选择“签入”,签入新文件夹后再继续。

  3. 将文件从 Windows 文件资源管理器拖动到 Visual Studio“源代码管理器”窗口中。

  4. 在团队资源管理器的“挂起的更改”页上,确保“包含的项”列出了要添加的所有文件,然后选择“签入”。

使用代码中不包含的二进制文件

许多团队依赖的二进制文件存在于其代码解决方案之外。 通常,这些二进制文件是团队从第三方获得许可的库的一部分,或者二进制文件是来自同一公司的其他团队。 例如,A 团队依赖于 B 团队生成的二进制文件,每个团队在不同的项目集合中工作。 B 团队将二进制文件发送给 A 团队,A 团队再将其签入版本控制中。

提示

NuGet 包可让你的团队更轻松地管理依赖项,并使二进制文件保持最新。 可以使用 Azure Artifacts 将 NuGet 包存储在 Azure DevOps Server 或 Azure DevOps Services 中。

应当用于存储外部二进制文件的文件夹和工作空间结构取决于解决方案依赖这些库的方式。

在文件夹或分支结构中添加二进制文件

如果将外部二进制文件放在包含解决方案文件夹的同一父文件夹中,那么所有解决方案中的所有代码项目都可以使用同一相对路径引用库。 例如,团队可以使用以下文件夹结构:

关系图显示了 Main 父文件夹中的库文件夹。

每个代码项目随后都可以使用相对路径 ../../Lib 来引用库文件夹。

如果你的团队需要隔离需要不同版本的二进制文件的不同工作,就可以为库文件夹和解决方案文件夹一起创建分支。 例如,版本 1 的应用利用版本 1 的库。 由于一些开发人员在处理下一个版本,他们使用版本 2,但其他开发人员尚未准备好升级。 你就可以使用分支来处理这些情况。

关系图显示了分支结构中的库文件夹。

使用工作区映射二进制文件

某些公司必须管理第三方库上的更复杂的依赖项。 例如,多个项目可能包含对一组通用库具有不同依赖项的解决方案。 在这些情况下,可以将外部库存储在专用项目中。 各项目的参与者将在包含所需的库的文件夹中进行映射。

例如,FabrikamFiber 设置了以下项目、分支和文件夹结构:

关系图显示了存储在专用项目中的库。

开发人员可以针对两项不同的工作设置具有两个工作区的开发计算机,其中每项工作都映射在所需的库中:

关系图显示了工作区在库中的映射方式。

自定义版本控制忽略的文件

默认情况下,版本控制会忽略某些类型的文件,例如 .dll 文件。 将忽略的文件添加到映射在本地工作区中的文件夹,或将忽略的文件拖动到源代码管理器中时,文件将显示在团队资源管理器“挂起的更改”页中的“排除的项”下。

可通过将 .tfignore 文本文件放置在要应用配置的文件夹中来配置要忽略的文件类型。 .tfignore 文件效果是递归的,但子文件夹中的 .tfignore 文件会替代父文件夹中的 .tfignore 文件。

.tfignore 文件的规则

以下规则适用于 .tfignore 文件:

  • 注释行以 # 开头。
  • 支持 *? 通配符。
  • filespec 是递归的,除非前面加上 \ 字符。
  • ! 否定 filespec,因此不会忽略与模式匹配的文件。

示例 .tfignore 文件

######################################
# Ignore .cpp files in the ProjA subfolder and all its subfolders
ProjA\*.cpp
#
# Ignore .txt files in this folder
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Don't ignore .dll files in this folder nor in any of its subfolders
!*.dll

创建并使用 .tfignore 文件

可以手动创建使用上述规则的 .tfignore 文本文件,也可以在“挂起的更改”页检测到排除的更改时自动生成 .tfignore 文件。

  1. 在团队资源管理器的“挂起的更改”页上,选择“排除的更改”部分中的“检测到”链接。
  2. 在“提升候选更改”对话框中,右键单击要忽略的文件,然后从上下文菜单中选择“忽略此本地项”、“按扩展名忽略”、“按文件名忽略”或“按文件夹忽略”。
  3. 选择“取消”以关闭对话框。
  4. “挂起的更改”页的“包含的更改”部分中随即将显示 .tfignore 文件。 您可以打开此文件并修改它以满足您的需求。

.tfignore 文件将添加为包含的挂起的更改,因此创建的规则自动适用于获得该文件的人员。

从命令提示符处工作

对于自动化进程,或者如果要使用命令提示符,可以使用 tf.exe add 命令,而不是本文中的过程。 add 命令将文件从本地计算机上的工作区上传到服务器。