Visual Studio 如何连接到存储库位于 GitHub 上的 Azure DevOps 工作区?

How can Visual Studio connect to an Azure DevOps workspace whose repository is on GitHub?

Visual Studio 可以通过添加新的团队项目连接,通过团队资源管理器连接到 Azure DevOps 项目。

通过连接到团队项目(托管在 Azure DevOps 中),可以看到工作项、构建等:

然而,当上述 Azure DevOps 项目 未使用 Azure DevOps 内部 Git 存储库 时,出现了一个问题,而是 正在使用外部 GitHub 存储库

在 Azure DevOps 中,此外部 GitHub 存储库设置于: 项目设置 --> 面板 --> Git集线器连接 和工作单元(例如任务)已成功 linked 到 [=40] 中的提交=]中心回购。

Visual Studio 仅提供对团队项目内部 Git 存储库的支持,该存储库是空的,因为正在使用外部 GitHub 存储库。

如果 Visual Studio 直接连接到 GitHub 存储库,则所有 Git 命令都可用,但团队项目 link 丢失并且诸如 "Work Items"、"Builds" 等不再可用。另一方面,通过连接到 Azure DevOps Team 项目,这些是可用的,但源代码存储库(在 GitHub 中)不再可用。

这两个选项似乎是相互排斥的。有没有一种方法能够在同时使用外部 GitHub 存储库(而不是 Azure DevOps 未使用的内部 Git 存储库)的同时连接到 Azure DevOps 团队项目?

没有。 Azure DevOps 和 GitHub 虽然都属于 Microsoft,但它们是独立的服务。

有点小窍门...Visual Studio 中的很多功能都取决于 origin 遥控器。如果有多个遥控器,Visual Studio 将点亮 origin 遥控器引用的提供程序的功能。因此,当您的本地存储库有多个遥控器时,一个到 Github,一个到 Azure Repos,origin 遥控器中提供程序的附加功能将激活。在这种情况下,您仍然可以从任一遥控器 push/fetsh/pull。

所以:

  • 在 Azure Repos 上创建一个存储库(通过 no README 或 .gitIgnore 将其初始化为裸存储库)。
  • 从连接 window
  • 中将其克隆到 Visual Studio
  • 从存储库设置或命令行添加第二个远程指向您的 Github 项目。
  • 从 Github 项目中提取内容

或:

  • 在 Azure Repos 中创建存储库并复制克隆 url
  • 将本地 git 存储库中的现有遥控器重命名为 github
  • 将 Azure Repos 远程添加到名称为 origin
  • 的本地存储库
  • 使用 连接到项目... window 连接到 Azure Repos 存储库。然后从本地存储库打开本地 git 存储库。
  • Visual Studio应该link两个起来。

然后您可以忽略 origin 遥控器。它纯粹用于 Visual Studio 告诉它激活 Azure Boards 和 Azure Pipelines 功能。

这应该让 Visual Studio 认为该项目主要托管在 Azure DevOps 上,您也可以推动和拉动 GitHub。