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