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 快速入门”。