关于创建分支的权限
如果存储库和企业策略设置允许创建分支,则可以将专用或内部存储库分支到个人帐户或分支到你拥有创建存储库的权限的 你的 GitHub Enterprise Server 实例 上的组织。 通常,可以将任何公共存储库分支到个人帐户或分支到你有权创建存储库的组织。
如果为属于个人帐户的专用存储库创建分支,外部协作者也可以获得对该分支的访问权限。 如果为属于组织的专用或内部存储库创建分支,则组织内的团队将获得对该分支的访问权限,但外部协作者不能获得。 可以将外部协作者添加到该分支,但前提是外部协作者也拥有对上游存储库的访问权限。
组织可以允许或阻止为组织拥有的任何专用存储库创建分支,企业可以强制实施策略来指定成员可以在何处创建专用存储库或内部存储库的分支。 策略可以控制企业组织可用的选项。. 有关详细信息,请参阅“管理组织的复刻政策”和“在企业中实施仓库管理策略”。
关于分支的可见性
分支是一个新存储库,与上游存储库共享代码和可见性设置。 公共存储库的所有分支都是公开的。 无法更改分支的可见性。
所有存储库都属于存储库网络。 存储库网络包含上游存储库、上游存储库的直接分支以及这些分支的所有分支。 存储库网络中的所有分支都具有相同的可见性设置。 有关详细信息,请参阅“了解仓库之间的连接”。
如果删除存储库或更改存储库的可见性设置,则将影响存储库的分支。 有关详细信息,请参阅“删除仓库或更改其可见性时,复刻会发生什么变化?”。
如果删除某分支,则该分支的任何代码贡献仍可供存储库网络访问。
关于分支的权限
专用分支继承上游存储库的权限结构。 这有助于私有仓库的所有者保持对其代码的控制。 例如,如果上游仓库是私有的,并授予团队读/写访问权限,则同一团队对该私有上游仓库的任何复刻拥有读/写权限。 专用分支仅继承团队权限(而不是个人权限)。
注意:****有关详细信息,请参阅“为组织设置基本权限”。
公共分支不继承上游存储库的权限结构。 如果你将一个公共存储库分支到你的个人帐户,进行更改,然后打开一个拉取请求,向上游存储库提出你的更改,便可允许对上游存储库具有推送权限的任何人将更改推送到拉取请求分支(包括删除分支)。 这可加速协作,让存储库维护员在合并之前于本地从用户拥有的分叉对拉取请求分支进行提交或运行测试。 不可向组织拥有的复刻授予推送权限。 有关详细信息,请参阅“允许更改从复刻创建的拉取请求分支”。
重要的安全注意事项
如果使用分支,或者如果你是允许创建分支的存储库或组织的所有者,请务必注意以下安全注意事项。
- 分支具有其自己的权限,这些权限独立于上游存储库。
- 已创建分支的存储库的所有者对存储库网络中的所有分支都具有读取权限。
- 已创建分支的存储库的组织所有者对在个人用户命名空间中创建的分支具有管理员权限,包括删除分叉及其分支的能力。
- 已创建分支的存储库的组织所有者对在组织中创建的分支具有读取权限,但不具有删除分叉或其分支的能力。
- 从上游存储库中删除个人访问权限时,不会删除在另一个组织中创建的分支。
- 即使在删除了分支之后,对网络中任何存储库的提交都可以从同一网络中的任何存储库(包括上游存储库)访问。
关于组织内的分支
同一组织中的分支可复制其上游存储库的协作者和团队设置。 如果存储库属于某个组织:
- 该组织可以控制其分支的权限。
- 在目标组织或用户命名空间中存在且可见的上游权限结构中的任何团队都将复制其权限。
- 管理员权限仍保留给上游所有者,除非用户被分叉到其他组织。
- 如果该存储库被分叉到用户命名空间,则组织将保留管理员权限,任何具有访问权限的团队都将保留访问权限。