前叉

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

当人们想要对代码库进行实验性、风险性或机密性更改,但这些更改需要与原始存储库中的代码库隔离时,Git 存储库分支就非常有用。 新分支基本上是推送到新远程存储库的原始存储库的克隆。 分支独立于原始存储库,并且是完整副本(除非指定单个分支)。

作为独立副本,对分支所做的更改(例如添加提交或分支)不会与原始存储库共享。 如果要将代码库更改合并到原始存储库中,就必须创建拉取请求 (PR) 来请求评审和批准这些更改。

创建分支的过程不会将任何权限、策略或生成管道从原始存储库传输到分支。

本文介绍如何使用 Azure Repos Git 存储库中的分支,并提供讨论如何在 GitHub 存储库中管理分支的 GitHub 内容的链接。

本文介绍如何执行以下操作:

  • 在分叉之间共享代码
  • 在分支和分叉之间选择
  • 启用存储库分支
  • 创建分支
  • 在本地克隆分支
  • 将本地更改推送到分支
  • 创建并完成 PR
  • 同步分支

访问 Azure Repos 的先决条件

  • 必须在 Azure DevOps 项目设置中启用 Repos。 如果 Repos 中心和关联页面未显示,请参阅打开或关闭 Azure DevOps 服务以重新启用 Repos。

  • 若要查看专用项目中的代码,必须是 Azure DevOps 项目的成员,具有基本访问级别或更高级别。 对于公共项目,每个人都可以查看代码。

  • 若要克隆或贡献专用项目的代码,必须是“参与者”安全组的成员或具有相应的权限集。 对于公共项目,任何人都可以克隆和贡献代码。 若要了解详细信息,请参阅什么是公共项目?

    注意

    对于公共项目,被授予利益干系人访问权限的用户对 Azure Repos 具有完全访问权限。

  • 必须在 Azure DevOps 项目设置中启用 Repos。 如果 Repos 中心和关联页面未显示,请参阅打开或关闭 Azure DevOps 服务以重新启用 Repos。

  • 若要查看代码,必须是 Azure DevOps 项目的成员,具有基本访问级别或更高级别。 如果你不是项目成员,请添加为成员

  • 若要克隆或贡献代码,在要更改的项目中,必须是“参与者”安全组的成员或具有相应的权限。

在分叉之间共享代码

原始存储库通常称为上游存储库。 可以创建 PR 以在任一方向合并更改:从分支到上游或从上游到分支。 最常见的方向是从分支到上游。 目标存储库的权限、策略、生成和工作项将应用于 PR。

在分支和分叉之间选择

对于有 2-5 名开发人员的小型团队来说,可能无需使用分支工作流,因为每个人都可以在功能分支中工作,且分支策略可以保护默认分支。 但如果团队扩展得过大而不适合这种安排,就可以切换到分支工作流。

如果存储库包含大量临时或不常提交更改的提交者,例如处理开源项目时,就建议使用分支工作流。 通常,只有项目的核心参与者才应具有对原始存储库的直接提交权限。 其他协作者应使用分支工作流来隔离其建议的更改,直到核心参与者有机会评审其工作。

启用存储库分支

若要为 Azure Repos Git 存储库启用分支,请参阅启用分支

若要为 GitHub 存储库启用分支,请参阅管理组织的分支策略

分叉工作流

分支工作流由以下各部分中所述的五个步骤组成。

  1. 创建分支
  2. 在本地克隆分支
  3. 将本地更改推送到分支
  4. 创建并完成 PR
  5. 同步分支

创建分支

以下步骤说明如何为 Azure Repos Git 存储库创建分支。

注意

要在 Azure DevOps 项目中为存储库创建分支,必须具有该项目的创建存储库权限。 存储库所有者应考虑为分支创建专用项目,并将“创建存储库”权限分配给所有参与者。 有关设置权限的详细信息,请参阅设置 Git 存储库权限

  1. 在 Web 浏览器中,导航到要创建分支的 Azure Repos Git 存储库。 选择“存储库”>“文件”,然后从省略号菜单中选择“分支”以打开“分支”对话框。

    Azure Repos“存储库文件”页上“更多操作”菜单中“分支”菜单项的屏幕截图。

  2. 在“分支”对话框中,为分支存储库命名,选择要在其中创建分支的项目,选择要包含在分支中的分支,然后选择“分支”。 可以指定分支是包含所有分支还是仅包含默认分支。 如果存储库包含多个主题分支,请考虑仅将默认分支包含在分支中。

    Azure Repos“存储库文件”页上“分支”对话框的屏幕截图。

有关如何为 GitHub 存储库创建分支的信息,请参阅为存储库创建分支

在本地克隆分支

创建存储库分支后,克隆分支以在计算机上的文件夹中创建本地副本。 可以通过命令行或使用 IDE(如 Visual Studio)进行克隆。 若要详细了解如何克隆存储库,请参阅克隆现有 Git 存储库

克隆远程存储库时,Git 将别名 origin 指定为克隆的远程存储库的 URL 简写形式。 为方便起见,请为从中创建分支的存储库(称为上游存储库)再添加一个名为 upstream 的别名。 以下步骤介绍如何添加 upstream 别名。

提示

为方便起见,可以在 Git 命令中使用 originupstream 别名,而不是相应的 URL。

要在 Visual Studio 中添加 upstream 别名,请执行以下步骤:

  1. 从菜单栏中选择“工具”>“选项”,打开“选项”窗口。 选择“源代码管理”>“Git 存储库设置”>“远程库”,然后选择“添加”,打开“添加远程库”对话框。

    Visual Studio 2019“源代码管理”菜单“Git 存储库设置”子菜单的“远程库”窗格中“添加”按钮的屏幕截图。

  2. 在“添加远程库”对话框中,添加名为 upstream 的新远程库,并输入已创建分支的存储库的 Git 克隆 URL。 然后选择“保存”。

    Visual Studio 2019 中“添加远程库”对话框的屏幕截图。

将本地更改推送到分支

创建分支时,将创建远程存储库的个人独立副本。 因此,你可以不受任何阻止地直接在本地克隆的 main 分支中工作,然后将该工作推送到分支的 main 分支。 但通常最好使用功能分支处理你的工作。 使用功能分支:

  • 可以同时维护多个独立的工作流程。

  • 可以使他人更容易理解你共享的工作,因为该工作按分支组织到不同的工作流中。

典型的 Git 工作流包括以下步骤:

  1. 创建本地功能或 bug 修复分支。

  2. 在新分支中进行更改并提交工作。 通常,人们在处理功能或 bug 修复时要提交多次。

  3. 将功能或 bug 修复分支推送到你的分支。 分支的别名为 origin

有关如何推送更改的信息,请参阅使用推送共享代码

创建并完成 PR

在 Azure Repos 中,若要将推送到分支的更改合并到原始存储库中,可以执行以下操作:

  1. 创建 PR 以请求评审和批准更改。 打开 PR 时,将 PR 源分支设置为你的分支中的功能或 bug 修复分支。 PR 目标分支通常是已创建分支的存储库的 main 分支。 该存储库称为上游存储库,别名为 upstream

    以下屏幕截图显示了在 Azure Repos 中创建的 PR 的源存储库和分支以及目标存储库和分支。

    Azure Repos 中 PR 源和目标分支选项的屏幕截图。

    若要详细了解如何使用浏览器、Visual Studio 或 Azure DevOps CLI 创建 PR,请参阅创建 PR

    重要

    对上游存储库具有读取权限的任何人都可以打开该存储库的 PR。 如果上游存储库有一个配置为在创建 PR 时运行的 PR 生成管道,则生成将在 PR 引入更改时运行。

  2. 若要完成 PR,所有必需的审阅者都必须批准 PR 更改,并且必须满足所有目标分支策略。 获得 PR 批准并完成后,PR 源分支中的更改将合并到 PR 目标分支中。

有关如何创建和完成 GitHub PR 的信息,请参阅创建拉取请求合并拉取请求

同步分支

PR 将分支中的更改合并到上游存储库的目标分支后,你可以从上游存储库的目标分支进行拉取,以使用你的更改和其他参与者所做的更改更新相应的本地分支。 然后便可执行以下操作:

  • 从更新的本地分支创建新的功能或 bug 修复分支。

  • 通过从更新的本地分支推送origin 来更新你的分支。

通常,上游存储库的目标分支为 main。 如果不直接编辑本地 main 分支(在功能分支中工作),在从上游分支 upstream/main拉取时,将更新本地 main 分支,而不会发生合并冲突。

后续步骤