关于分支
分支允许您在仓库的限定区域中开发特性、修复错误或安全地试验新想法。
您始终是从现有分支创建分支。通常,您可能会从仓库的默认分支创建新分支。然后,您可以独立于其他人对仓库所做的更改来处理此新分支。您为构建特性而创建的分支通常称为特性分支或主题分支。有关更多信息,请参阅“在仓库中创建和删除分支”。
您还可以使用分支发布 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
分支。
使用受保护的分支
具有“编辑仓库规则”权限的仓库管理员或自定义角色可以启用分支上的保护。如果您正在处理受保护的分支,则无法删除或强制推送到该分支。仓库管理员还可以启用其他几个受保护分支设置,以在合并分支之前强制执行各种工作流程。
注意
如果您是仓库管理员,即使拉取请求不满足要求,您也可以合并已启用分支保护的分支上的拉取请求,除非分支保护已设置为“包含管理员”。
要查看您的拉取请求是否可以合并,请查看拉取请求的“会话”选项卡底部的合并框。更多信息,请参阅“关于受保护的分支”。
当分支受保护时
- 您将无法删除或强制推送到该分支。
- 如果在分支上启用了必需的状态检查,则在所有必需的 CI 测试通过之前,您将无法将更改合并到该分支。更多信息,请参阅“关于状态检查”。
- 如果在分支上启用了必需的拉取请求审查,则在满足拉取请求审查策略中的所有要求之前,您将无法将更改合并到该分支。更多信息,请参阅“合并拉取请求”。
- 如果在分支上启用了代码所有者的必需审查,并且拉取请求修改了具有所有者的代码,则代码所有者必须在合并拉取请求之前批准它。更多信息,请参阅“关于代码所有者”。
- 如果在分支上启用了必需的提交签名,则您将无法推送任何未签名且未验证的提交到该分支。更多信息,请参阅“关于提交签名验证”和“关于受保护的分支”。
- 如果您使用 GitHub 的冲突编辑器来修复您从受保护分支创建的拉取请求的冲突,GitHub 将帮助您为拉取请求创建替代分支,以便可以合并您对冲突的解决方法。更多信息,请参阅“在 GitHub 上解决合并冲突”。
进一步阅读
- “关于拉取请求”
- GitHub 词汇表中的“GitHub 词汇表”
- Git 文档中的“简述分支”