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