GitHub协作者权限风险咨询:能否删代码或制造分支冲突?
关于GitHub协作者权限与仓库保护的问题解答
问题1:该协作者能否删除仓库及其分支中的所有代码?
- 一般来说,普通协作者(非仓库所有者/管理员)没有删除整个仓库的权限,但如果没设置分支保护,他们能删除自己推送过的分支,也可以在分支里提交删除代码的PR,或是直接推送删除代码的提交。
问题2:该协作者能否合并所有分支,故意制造冲突使代码无法使用/读取?
- 如果协作者有分支推送权限,且目标分支没设保护规则(比如不需要PR审核、允许直接推送),他们可以往目标分支推送冲突代码,或是创建恶意PR并自行合并(权限允许的话),确实会导致代码混乱。
仓库保护方案
紧急操作(立刻执行)
- 先移除该承包商的协作者权限:进入仓库的Settings → Collaborators and teams,找到该用户后点击Remove access,这是最直接阻断风险的办法。
- 马上备份仓库:用命令
git clone --mirror <仓库地址>创建完整镜像备份,包含所有分支和历史记录。
长期权限与分支配置
- 细化分支保护规则:
- 给核心分支(比如main/master)开启「Require a pull request before merging」,同时设置「Require approvals」(至少1个审核人),禁止协作者直接合并PR。
- 开启「Do not allow bypassing the above settings」,确保管理员也不能绕开规则。
- 开启「Require status checks to pass before merging」,配合CI/CD验证代码合法性。
- 限制分支删除权限:虽然分支保护里没有直接的“禁止删除”勾选,但可以通过仓库权限设置,把协作者的权限从Write改成Read(如果不需要他们再提交代码),或者用GitHub Teams,给团队分配更精细的权限,比如只允许推送到特定分支,禁止删除分支。
- 启用仓库审计日志:进入仓库Settings → Audit log,查看该协作者的操作记录,确认有没有可疑操作,后续也能追踪所有权限变更和代码操作。
内容的提问来源于stack exchange,提问作者game tactics
相关产品推荐
相关产品推荐

