关于创建分支的权限
您可以将任何公共仓库分支到您的个人帐户,或分支到您有权创建仓库的组织。如果您有权访问私有仓库,并且所有者允许分支,您可以将仓库分支到您的个人帐户,或分支到您有权创建仓库的 GitHub 团队组织。您无法使用 GitHub Free 将私有仓库分支到组织。有关 GitHub 团队和 GitHub Free 的更多信息,请参阅“GitHub 的计划”。
如果您分支属于个人帐户的私有仓库,外部协作者也将获得对分支的访问权限。如果您分支属于组织的私有仓库,组织内的团队将获得对分支的访问权限,但外部协作者不会。您可以向分支添加外部协作者,但前提是外部协作者也拥有对上游仓库的访问权限。
如果您是拥有托管用户的企业成员,则对您可以分支的仓库存在进一步的限制。有关更多信息,请参阅 GitHub Enterprise Cloud 文档中的“关于企业托管用户”。
组织可以允许或阻止分支组织拥有的任何私有仓库。有关更多信息,请参阅“管理组织的分支策略”。
关于分支的可见性
分支是一个新的仓库,它与上游仓库共享代码和可见性设置。所有公共仓库的分支都是公开的。您无法更改分支的可见性。
所有仓库都属于仓库网络。仓库网络包含上游仓库、上游仓库的直接分支以及所有这些分支的分支。仓库网络中的所有分支都具有相同的可见性设置。有关更多信息,请参阅“了解仓库之间的连接”。
如果您删除仓库或更改仓库的可见性设置,您将影响仓库的分支。有关更多信息,请参阅“删除或更改仓库可见性时,分支会发生什么?”。
关于分支的权限
私有分支继承上游仓库的权限结构。这有助于私有仓库的所有者控制他们的代码。例如,如果上游仓库是私有的,并授予团队读写权限,那么同一个团队将对任何私有上游仓库的分支拥有读写权限。只有团队权限(而不是个人权限)会被私有分支继承。
注意:当您更改组织的基本权限时,私有分支的权限不会自动更新。有关更多信息,请参阅“设置组织的基本权限”。
公共分支不会继承上游仓库的权限结构。如果您将公共仓库分叉到您的个人帐户,进行更改,然后打开一个拉取请求以将您的更改提议到上游仓库,您可以授予任何对上游仓库有推送权限的人员对您的拉取请求分支进行推送更改的权限(包括删除分支)。这通过允许仓库维护人员从用户拥有的分支进行提交或本地运行测试到您的拉取请求分支来加速协作,然后再合并。您不能授予组织拥有的分支推送权限。有关更多信息,请参阅“允许对从分支创建的拉取请求分支进行更改”。
关于分叉仓库的推送规则集
注意
推送规则集处于测试阶段,可能会发生变化。
推送规则适用于仓库的整个分支网络,确保仓库的每个入口点都受到保护。例如,如果您分叉了一个启用了推送规则集的仓库,那么相同的推送规则集也将应用于您的分叉仓库。
对于分叉仓库,唯一对推送规则具有绕过权限的人是根仓库中具有绕过权限的人。
有关更多信息,请参阅“关于规则集”。
重要的安全注意事项
如果您使用分支,或者您是允许分支的仓库或组织的所有者,那么了解以下安全注意事项非常重要。
- 分支具有与上游仓库不同的权限。
- 已分叉仓库的所有者对仓库分支网络中的所有分支具有读取权限。
- 已分叉仓库的组织所有者对个人用户命名空间中创建的分支具有管理员权限,包括删除分支及其分支的能力。
- 已分叉仓库的组织所有者对组织中创建的分支具有读取权限,但没有删除分支及其分支的能力。
- 在另一个组织中创建的分支,当从上游仓库中删除个人访问权限时,不会被删除。
- 可以从同一个分支网络中的任何仓库访问分支网络中任何仓库的提交,包括上游仓库。
关于组织内的分支
同一个组织内的分支会复制其上游仓库的协作者和团队设置。如果仓库归组织所有
- 该组织控制其分支的权限。
- 上游权限结构中存在且在目标组织或用户命名空间中可见的任何团队都将复制其权限。
- 管理员权限保留在上游所有者手中,除非用户将分支到不同的组织。
- 如果该仓库被分支到用户命名空间,则组织保留管理员权限,并且任何有访问权限的团队都将保留访问权限。