如果您所在的组织已从 Azure DevOps 迁移到 GitHub,本指南将说明工作流的变化,以帮助您顺利完成迁移。
结构
在 Azure DevOps 中,仓库嵌套在 团队项目 内,因此您的环境结构如下所示
- 组织
- 团队项目
- 仓库
- 团队项目
- 仓库
- 团队项目
权限和可见性从团队项目向下流动。
GitHub 的结构不同。仓库直接嵌套在 组织 中,组织中也包含团队
- 企业账户
- 组织
- Teams
- 仓库
- 组织
- Teams
- 仓库
- 组织
权限和可见性由组织成员身份、团队成员身份以及个人权限的组合决定。
在 Azure DevOps 中用于对仓库进行分组的“团队项目”概念在 GitHub 中不存在,且不建议将 GitHub 的组织视为等同于团队项目。
虽然您最初可能会发现 GitHub 上的每个已迁移组织拥有一长串未组织的仓库列表,但您可以通过组织成员的团队来授予访问权限和权限,这将大大简化组织仓库的导航。
身份验证、权限和团队
GitHub 提供两种身份验证方式。您使用哪种方式取决于企业账户的配置。
如果您的企业账户使用企业托管用户(Enterprise Managed Users),则需通过您的身份提供商(例如 Entra ID)登录 GitHub,并使用一个与企业账户关联的 已配备 账户。
否则,您将使用 个人 GitHub 账户。该账户会被邀请加入企业账户以及您将要使用的组织。如果企业账户配置了额外的 SAML 访问限制,您的个人账户将会与身份提供商 关联,在访问企业账户资源时会提示您使用 IdP 进行身份验证。
在 GitHub 企业版中,仓库可以是公开(public)、私有(private)或内部(internal)。私有仓库仅对拥有显式访问权限的人员和团队可见,内部仓库对企业内的所有成员可见,但对企业外部的人员不可见。内部仓库在同一企业的多个组织需要发现并复用代码时非常有用。如果企业使用企业托管用户,用户账户不能创建公开仓库或其他公开内容。
使用 Git
要继续使用 Git 对仓库进行操作,您需要进行一些更改。
- 将远程 URL 更新为指向 GitHub。参见 管理远程仓库。
- 更新身份验证方式。
- 使用 HTTPS 身份验证时,您需要创建个人访问令牌。参见 管理个人访问令牌。
- 使用 SSH 身份验证时,您需要创建或添加现有的 SSH 密钥到 GitHub。参见 使用 SSH 连接到 GitHub。
- 如果您的企业或组织使用 SAML 单点登录(SSO),则必须在个人访问令牌或 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 文件中的文件、文件夹以及通配符模式自动分配审阅者。参见 代码所有者简介。
软件包和制品
在 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 Chat 中问题、在拉取请求中审查并提出建议,甚至通过 Copilot 云代理代表您进行更改所需的全部上下文。