关于分支
分支让您能够在仓库的独立区域内开发新功能、修复错误或安全地尝试新想法。
您始终从已有分支创建新分支。通常,您会从仓库的默认分支创建新分支。然后,您可以在该分支上独立工作,避免与其他人对仓库所做的更改产生冲突。用于构建功能的分支通常称为功能分支或主题分支。欲了解更多信息,请参阅在仓库中创建和删除分支。
您还可以使用分支来发布 GitHub Pages 站点。欲了解更多信息,请参阅GitHub Pages 是什么?。
您必须拥有仓库的写入权限才能创建分支、打开拉取请求或在拉取请求中删除并恢复分支。欲了解更多信息,请参阅GitHub 上的访问权限。
关于默认分支
当您在 GitHub 上创建一个带有内容的仓库时,GitHub 会为该仓库创建一个单独的分支。这个仓库中的第一个分支即为默认分支。默认分支是任何人访问您的仓库时 GitHub 所显示的分支。默认分支也是当有人克隆仓库时 Git 本地检出的初始分支。除非另行指定分支,否则仓库的默认分支是新拉取请求和代码提交的基础分支。
默认情况下,GitHub 在任何新仓库中将默认分支命名为main。
您可以更改现有仓库的默认分支。欲了解更多信息,请参阅更改默认分支。
您可以为新仓库设置默认分支的名称。欲了解更多信息,请参阅管理仓库的默认分支名称、管理组织中仓库的默认分支名称以及在企业中强制执行仓库管理策略。
分支的使用
当您对当前分支(head 分支)的工作感到满意时,您可以打开拉取请求,将其更改合并到另一个分支(base 分支)。欲了解更多信息,请参阅关于拉取请求。
拉取请求合并或关闭后,您可以删除 head 分支,因为它已不再需要。您必须拥有仓库的写入权限才能删除分支。不能删除直接关联到打开的拉取请求的分支。欲了解更多信息,请参阅在拉取请求中删除和恢复分支。
如果在拉取请求合并后删除了 head 分支,GitHub 会检查同一仓库中是否有将已删除分支设为 base 分支的打开的拉取请求。GitHub 会自动更新这些拉取请求,将它们的 base 分支改为已合并的拉取请求的 base 分支。下图对该过程进行说明。
这里有人从 main 分支创建了名为 feature1 的分支,然后您又从 feature1 创建了名为 feature2 的分支。两个分支都有打开的拉取请求。箭头指示每个拉取请求当前的 base 分支。此时,feature1 是 feature2 的 base 分支。如果现在合并 feature2 的拉取请求,feature2 分支将合并到 feature1。

在下图中,有人已将 feature1 的拉取请求合并到 main 分支,并删除了 feature1 分支。因此,GitHub 自动将 feature2 的拉取请求重新定位,使其 base 分支现在为 main。

现在,当您合并 feature2 的拉取请求时,它将合并到 main 分支。
受保护分支的使用
仓库管理员或拥有“编辑仓库规则”权限的自定义角色可以在分支上启用保护。如果您正在使用受保护的分支,则无法删除该分支或进行强制推送。仓库管理员还可以启用其他受保护分支设置,以在分支合并之前强制执行各种工作流。
注意
如果您是仓库管理员,即使拉取请求未满足要求,也可以在已启用分支保护的分支上合并拉取请求,除非分支保护已设置为“包括管理员”。
要查看您的拉取请求是否可以合并,请在拉取请求的Conversation标签页底部的合并框中查找。欲了解更多信息,请参阅关于受保护的分支。
当分支受保护时
- 您将无法删除或强制推送到该分支。
- 如果分支启用了必需的状态检查,您必须等到所有必需的 CI 测试通过后才能将更改合并到该分支。欲了解更多信息,请参阅关于状态检查。
- 如果分支启用了必需的拉取请求审查,您必须满足拉取请求审查策略中的所有要求后才能将更改合并到该分支。欲了解更多信息,请参阅合并拉取请求。
- 如果分支启用了对代码所有者的必需审查,并且拉取请求修改了有所有者的代码,则代码所有者必须批准该拉取请求才能合并。欲了解更多信息,请参阅关于代码所有者。
- 如果分支启用了必需的提交签名,您将无法向该分支推送未签名或未验证的提交。欲了解更多信息,请参阅关于提交签名验证以及关于受保护的分支。
- 如果您使用 GitHub 的冲突编辑器来解决您从受保护分支创建的拉取请求的冲突,GitHub 会帮助您为该拉取请求创建一个替代分支,以便将冲突的解决方案合并。欲了解更多信息,请参阅在 GitHub 上解决合并冲突。