Skip to main content

Azure DevOps 和 GitHub 之间的主要差异

从 Azure DevOps 迁移到 GitHub后,存储库访问、身份验证和拉取请求等核心工作流有所不同。

如果你是已从 Azure DevOps 迁移到 GitHub 的组织的成员,本指南将介绍工作流中的更改,使迁移尽可能顺利。

结构

在 Azure DevOps 中,存储库嵌套在 团队项目中,因此环境的结构如下所示:

  • 组织
    • 团队项目
      • 存储库
    • 团队项目
      • 存储库

权限和可见性源自团队项目。

GitHub 的结构不同。 存储库直接嵌套在 组织内,其中还包含团队:

  • 企业帐户
    • 组织
      • 团队
      • 存储库
    • 组织
      • 团队
      • 存储库

权限和可见性由组织成员身份、团队成员资格和个人权限的组合决定。

团队项目的概念用于在 Azure DevOps 中对存储库进行分组,在 GitHub 中不存在,并且不建议将 GitHub 中的组织视为团队项目的等效项。

虽然你可能会发现,在 GitHub 上,每个迁移的组织都有一个较长而未整理的存储库列表,但通过组织成员团队授予访问权限和管理权限,可以使组织的存储库更容易导航。

身份验证、权限和团队

可通过两种方法对 GitHub进行身份验证。 使用哪种方法取决于企业帐户的配置方式。

如果你的企业帐户使用 Enterprise Managed Users,你将通过标识提供者(例如 Entra ID)使用绑定到企业帐户的已配置帐户登录到 GitHub 。

否则,你将使用 个人 GitHub 帐户。 该帐户将被邀请加入企业帐户以及你将要工作的所有组织。 如果企业帐户配置了额外的 SAML 访问限制,则您的个人帐户会与 IdP 链接。 需要访问企业帐户中的资源时,系统会提示使用 IdP 进行身份验证。

在企业使用GitHub时,存储库可以是公共、专用或内部的。 专用存储库仅对具有显式访问权限的人员和团队可见,内部存储库对企业的所有成员可见,但对企业外部的人员不可见。 当同一企业中的多个组织需要发现和重用代码时,内部存储库非常有用。 如果你的企业使用 Enterprise Managed Users,则用户帐户无法创建公开存储库或其他公开内容。

使用 Git

若要继续使用 Git 处理存储库,需要进行一些更改。

  1. 将远程 URL 更新为指向 GitHub。 请参阅“管理远程仓库”。
  2. 更新身份验证方式。
  3. 如果您的企业或组织使用 SAML 单点登录(SSO),则必须授权您的 personal access token 或 SSH 密钥,以便能够访问资源。

拉取请求流程

现在,代码库托管在 GitHub上,你将使用 GitHub 存储库中创建的拉取请求提出更改。

如果企业已集成 Azure Boards 和 Pipelines,则这两者都将与 GitHub一起使用。 您可以在提交信息和拉取请求中继续引用工作项。 例如: Fix login bug (AB#1234)

可以继续在 Azure Boards 上查看和管理工作项。 还可以在 Azure 内将分支、提交和拉取请求链接到工作项。 请参阅 Microsoft Learn 上的 将 GitHub 提交、拉取请求、分支和问题链接到 Azure Boards 工作项

分支保护

对存储库具有管理员访问权限的人员可以在 GitHub上配置 分支保护规则 。 这些策略类似于 Azure DevOps 上的 分支策略 ,并设置规则,例如最小数量的审批审阅者、成功状态检查和需要签名的提交。

GitHub 还支持根据存储库 CODEOWNERS 文件中的文件、文件夹和 glob 模式自动分配审阅者。 请参阅“关于代码所有者”。

软件包和制品

在 Azure DevOps 中,你可能已使用 Azure Artifacts 发布和使用包(例如 NuGet 包、npm 包或 Maven 包),以及存储 Azure Pipelines 生成的生成项目。

在 GitHub 上,包通常发布到 GitHub Packages 并与存储库或组织关联。 根据企业完成迁移的方式,可以继续将包发布到 Azure Artifacts、将包移动到 GitHub Packages,或使用这两者的组合。

如果迁移后无法再还原依赖项,请检查包源配置。 例如,可能需要在文件(如nuget.config.npmrc``settings.xml或管道配置)中更新注册表 URL 或凭据。

有关详细信息,请参阅“GitHub Packages 简介”。

GitHub Copilot

在 GitHub 上托管存储库可解锁 Copilot 的全部功能。 您的代码库为 Copilot 提供在 Copilot 聊天助手 中回答问题所需的所有上下文,并在您的拉取请求中进行审阅和提出建议,甚至可以通过 Copilot 编码智能体 为您进行更改。

请参阅“GitHub Copilot 快速入门”。