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

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

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. 选择 “查看>其他 Windows>源代码管理资源管理器”。

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

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

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

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

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

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

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

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

  11. 选择 “签入”。

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

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

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

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

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

  2. 选择 “查看>其他 Windows>源代码管理资源管理器”。

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

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

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

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

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

  8. 选择 “签入”。

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

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

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

  1. 在 Visual Studio 中,选择 “查看>其他 Windows>源代码管理资源管理器”。

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

    重要

    确保签入此文件夹。 如果创建新文件夹,请右键单击它并选择 “签入”,然后在继续操作之前签入新文件夹。

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

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

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

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

提示

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

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

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

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

显示主父文件夹中的“库”文件夹的关系图。

然后,每个代码项目都可以使用相对路径 ../../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 命令将文件从本地计算机上的工作区上传到服务器。