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