关于分支
分支允许您在存储库的独立区域中开发功能、修复错误或安全地尝试新想法。
您始终从现有分支创建分支。通常,您可能会从存储库的默认分支创建新分支。然后,您可以独立于其他人对存储库所做的更改,在该新分支上进行工作。您创建用于构建功能的分支通常称为功能分支或主题分支。有关更多信息,请参阅“在存储库中创建和删除分支”。
您还可以使用分支发布 GitHub Pages 网站。有关更多信息,请参阅“关于 GitHub Pages”。
您必须对存储库具有写入权限才能创建分支、打开拉取请求或删除和还原拉取请求中的分支。有关更多信息,请参阅“GitHub 上的访问权限”。
关于默认分支
当您在 GitHub.com 上使用内容创建存储库时,GitHub 会使用单个分支创建存储库。存储库中的第一个分支是默认分支。默认分支是任何人在访问您的存储库时 GitHub 显示的分支。默认分支也是 Git 在有人克隆存储库时在本地检出的初始分支。除非您指定其他分支,否则存储库中的默认分支是新拉取请求和代码提交的基分支。
默认情况下,GitHub 在任何新存储库中将默认分支命名为main
。
您可以更改现有存储库的默认分支。有关更多信息,请参阅“更改默认分支”。
您可以为新存储库设置默认分支的名称。有关更多信息,请参阅“管理存储库的默认分支名称”,“管理组织中存储库的默认分支名称”和“在企业中强制执行存储库管理策略”。
使用分支
对工作感到满意后,您可以打开拉取请求,将当前分支(head 分支)中的更改合并到另一个分支(base 分支)。有关更多信息,请参阅“关于拉取请求”。
拉取请求合并或关闭后,您可以删除 head 分支,因为不再需要它。您必须对存储库具有写入权限才能删除分支。您无法删除与打开的拉取请求直接关联的分支。有关更多信息,请参阅“在拉取请求中删除和恢复分支”。
如果您在拉取请求合并后删除了头部分支,GitHub 会检查同一仓库中是否有任何指定已删除分支为其基分支的开放拉取请求。GitHub 会自动更新所有此类拉取请求,将其基分支更改为已合并拉取请求的基分支。以下图表对此进行了说明。
这里有人从 `main` 分支创建了一个名为 `feature1` 的分支,然后您从 `feature1` 创建了一个名为 `feature2` 的分支。这两个分支都有开放的拉取请求。箭头指示每个拉取请求的当前基分支。此时,`feature1` 是 `feature2` 的基分支。如果现在合并了 `feature2` 的拉取请求,则 `feature2` 分支将合并到 `feature1` 中。
在下一张图中,有人将 `feature1` 的拉取请求合并到 `main` 分支,并删除了 `feature1` 分支。因此,GitHub 自动重新定位了 `feature2` 的拉取请求,使其基分支现在为 `main`。
现在,当您合并 `feature2` 拉取请求时,它将合并到 `main` 分支。
使用受保护分支
仓库管理员或具有“编辑仓库规则”权限的自定义角色可以启用分支上的保护。如果您正在处理受保护的分支,则无法删除或强制推送到该分支。仓库管理员还可以启用其他几个受保护分支设置,以在分支可以合并之前强制执行各种工作流程。
注意:如果您是仓库管理员,即使拉取请求不满足要求,您也可以合并具有分支保护功能的分支上的拉取请求,除非分支保护已设置为“包含管理员”。
要查看您的拉取请求是否可以合并,请查看拉取请求的 **对话** 选项卡底部的合并框。有关更多信息,请参阅“关于受保护分支”。
当分支受保护时
- 您将无法删除或强制推送到该分支。
- 如果在分支上启用了必需的状态检查,则在所有必需的 CI 测试通过之前,您将无法将更改合并到该分支。有关更多信息,请参阅“关于状态检查”。
- 如果在分支上启用了必需的拉取请求审查,则在满足拉取请求审查策略中的所有要求之前,您将无法将更改合并到该分支。有关更多信息,请参阅“合并拉取请求”。
- 如果分支启用了代码所有者的强制审查,并且拉取请求修改了具有所有者的代码,则代码所有者必须批准拉取请求才能将其合并。有关更多信息,请参阅“关于代码所有者”。
- 如果分支启用了强制提交签名,则您将无法推送任何未签署和验证的提交到该分支。有关更多信息,请参阅“关于提交签名验证”和“关于受保护分支”。
- 如果您使用 GitHub 的冲突编辑器来解决从受保护分支创建的拉取请求的冲突,GitHub 会帮助您为拉取请求创建一个备用分支,以便可以合并您对冲突的解决。有关更多信息,请参阅“在 GitHub 上解决合并冲突”。
进一步阅读
- "关于拉取请求"
- "GitHub 词汇表" 在 GitHub 词汇表中
- "分支概览" 在 Git 文档中