Skip to main content

Azure DevOps与GitHub之间的主要区别

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

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

结构

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

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

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

          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 模式自动分配审阅者。 请参阅“[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)”。

包和项目

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