Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
当人们想要对代码库进行实验性、风险性或隐藏性更改,但这些更改需要与原始存储库中的代码库隔离时,Git 存储库分支就非常有用。 新的分叉基本上是一个新的远程存储库,它共享原始存储库的源代码。
作为一个独立的版本,对分叉所做的更改(例如添加提交或分支),都会对原始存储库隐藏。 如果要将代码库更改合并到原始存储库中,就必须创建拉取请求 (PR) 来请求评审和批准这些更改。
创建分支的过程不会将任何权限、策略或生成管道从原始存储库传输到分支。
本文介绍如何使用 Azure Repos Git 存储库中的分支,并提供讨论如何在 GitHub 存储库中管理分支的 GitHub 内容的链接。
本文介绍如何执行以下操作:
- 在分叉之间共享代码
- 在分支和分叉之间选择
- 启用存储库分支
- 创建分支
- 在本地克隆分支
- 将本地更改推送到分支
- 创建并完成 PR
- 同步分支
先决条件
| 类别 | 要求 |
|---|---|
| 项目访问权限 | 项目的成员。 |
| 权限 | - 查看私有项目中的代码:至少要具有基本访问权限。 - 克隆或贡献专用项目中的代码:必须是参与者安全组的成员或者具有项目中的相应权限。 - 设置分支或存储库权限:管理分支或存储库的权限 权限。 - 更改默认分支:对存储库具有编辑策略权限。 - 导入存储库:必须是项目管理员安全组的成员,或者将 Git 项目级别创建存储库权限设置为允许。 有关详细信息,请参阅设置 Git 存储库权限。 |
| 服务 | 已启用存储库。 |
| 工具 | 可选。 使用 az repos 命令:Azure DevOps CLI。 |
注意
在公共项目中,具有 利益干系人 访问权限的用户具有对 Azure Repos 的完全访问权限,包括查看、克隆和参与代码。
在分叉之间共享代码
原始存储库通常称为上游存储库。 可以创建 PR 以在任一方向合并更改:从分支到上游或从上游到分支。 最常见的方向是从分支到上游。 目标存储库的权限、策略、生成和工作项将应用于 PR。
在分支和分叉之间选择
对于有 2-5 名开发人员的小型团队来说,可能无需使用分支工作流,因为每个人都可以在功能分支中工作,且分支策略可以保护默认分支。 但如果团队扩展得过大而不适合这种安排,就可以切换到分支工作流。
如果存储库包含大量临时或不常提交更改的提交者,例如处理开源项目时,就建议使用分支工作流。 通常,只有项目的核心参与者才应具有对原始存储库的直接提交权限。 其他协作者应使用分支工作流来隔离其建议的更改,直到核心参与者有机会评审其工作。
启用存储库分支
若要为 Azure Repos Git 存储库启用分支,请参阅启用分支。
若要为 GitHub 存储库启用分支,请参阅管理组织的分支策略。
分叉工作流
分支工作流由以下各部分中所述的五个步骤组成。
创建分支
以下步骤说明如何为 Azure Repos Git 存储库创建分支。
注意
要在 Azure DevOps 项目中为存储库创建分支,必须具有该项目的创建存储库权限。 存储库所有者应考虑为分支创建专用项目,并将“创建存储库”权限分配给所有参与者。 有关设置权限的详细信息,请参阅设置 Git 存储库权限。
在 Web 浏览器中,导航到要创建分支的 Azure Repos Git 存储库。 选择“存储库”>“文件”,然后从省略号菜单中选择“分支”以打开“分支”对话框。
在“分支”对话框中,为分支存储库命名,选择要在其中创建分支的项目,选择要包含在分支中的分支,然后选择“分支”。 可以指定分支是包含所有分支还是仅包含默认分支。 如果存储库包含多个主题分支,请考虑仅将默认分支包含在分支中。
有关如何为 GitHub 存储库创建分支的信息,请参阅为存储库创建分支。
在本地克隆分支
创建存储库分支后,克隆分支以在计算机上的文件夹中创建本地副本。 可以通过命令行或使用 IDE(如 Visual Studio)进行克隆。 若要详细了解如何克隆存储库,请参阅克隆现有 Git 存储库。
克隆远程存储库时,Git 将别名 origin 指定为克隆的远程存储库的 URL 简写形式。 为方便起见,请为从中创建分支的存储库(称为上游存储库)再添加一个名为 upstream 的别名。 以下步骤介绍如何添加 upstream 别名。
提示
为方便起见,可以在 Git 命令中使用 origin 和 upstream 别名,而不是相应的 URL。
要在 Visual Studio 中添加 upstream 别名,请执行以下步骤:
从菜单栏中选择“工具”>“选项”,打开“选项”窗口。 选择“源代码管理”>“Git 存储库设置”>“远程库”,然后选择“添加”,打开“添加远程库”对话框。
在“添加远程库”对话框中,添加名为
upstream的新远程库,并输入已创建分支的存储库的 Git 克隆 URL。 然后选择“保存”。
将本地更改推送到分支
分叉时,将创建原始存储库的个人版本(原始存储库称为“上游”)。 分叉独立于上游,但分叉共享代码,并保留指向上游的链接,从而允许将来同步。 因此,你可以不受任何阻止地直接在本地克隆的 main 分支中工作,然后将该工作推送到分支的 main 分支。 但通常最好使用功能分支处理你的工作。 使用功能分支:
可以同时维护多个独立的工作流程。
可以使他人更容易理解你共享的工作,因为该工作按分支组织到不同的工作流中。
典型的 Git 工作流包括以下步骤:
有关如何推送更改的信息,请参阅使用推送共享代码。
创建并完成 PR
在 Azure Repos 中,若要将推送到分支的更改合并到原始存储库中,可以执行以下操作:
创建 PR 以请求评审和批准更改。 打开 PR 时,将 PR 源分支设置为你的分支中的功能或 bug 修复分支。 PR 目标分支通常是已创建分支的存储库的
main分支。 该存储库称为上游存储库,别名为upstream。以下屏幕截图显示了在 Azure Repos 中创建的 PR 的源存储库和分支以及目标存储库和分支。
若要详细了解如何使用浏览器、Visual Studio 或 Azure DevOps CLI 创建 PR,请参阅创建 PR。
若要完成 PR,所有必需的审阅者都必须批准 PR 更改,并且必须满足所有目标分支策略。 获得 PR 批准并完成后,PR 源分支中的更改将合并到 PR 目标分支中。
有关如何创建和完成 GitHub PR 的信息,请参阅创建拉取请求和合并拉取请求。
同步分支
PR 将分支中的更改合并到上游存储库的目标分支后,你可以从上游存储库的目标分支进行拉取,以使用你的更改和其他参与者所做的更改更新相应的本地分支。 然后便可执行以下操作:
从更新的本地分支创建新的功能或 bug 修复分支。
通过从更新的本地分支推送到
origin来更新你的分支。
通常,上游存储库的目标分支为 main。 如果不直接编辑本地 main 分支(在功能分支中工作),在从上游分支 upstream/main时,将更新本地 main 分支,而不会发生合并冲突。