跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

GitHub 分支保护规则设置:禁止直接 Push 强制 Pull Request

介绍如何通过 GitHub 网页端设置分支保护规则,禁止向 main 分支直接推送代码,强制所有变更需经 Pull Request 审查。操作路径为 Settings > Branches > Add rule,核心选项包括 Require a pull request before merging 和 Include administrators。此外还推荐配置 CODEOWNERS 文件、开启 CI 状态检查及合并策略,以提升团队协作效率与代码质量。

云间运维发布于 2026/3/22更新于 2026/9/1073 浏览

可以通过 设置 GitHub 仓库的分支保护规则(Branch Protection Rules) 来禁止直接向 main 分支推送(push),强制所有代码变更必须通过 Pull Request(PR) 进行代码审查。


✅ 目标效果

设置完成后:

  • ❌ 任何人(包括管理员)都不能直接 git push 到 main 分支
  • ✅ 所有代码必须通过 Pull Request 提交
  • ✅ 可要求 PR 必须经过审批(Approval)
  • ✅ 可要求 CI/CD 构建通过后才能合并

🛠️ 设置步骤(以 GitHub 网页端为例)

第一步:进入仓库设置

  1. 打开你的 GitHub 仓库页面
  2. 点击 Settings 标签
  3. 在左侧菜单中选择 Branches

第二步:添加分支保护规则

  1. 在 "Branch protection rules" 区域,点击 Add rule

  2. 在 "Branch name pattern" 输入框中输入:

    main
    

    你也可以用 master 或其他分支名,支持通配符如 release-*

  3. 勾选以下保护选项:

✅ 强制要求 Pull Request(核心设置)
  • Require a pull request before merging(要求合并前必须有 PR)
    • 建议勾选:
      • Require approvals(要求至少 1 人审批)
      • Dismiss stale pull request approvals when new commits are pushed(新提交后需重新审批)
✅ 可选:要求状态检查(如 CI 构建通过)
  • Require status checks to pass before merging
    • 例如:build, test, lint 等 GitHub Actions 工作流
    • 勾选你希望通过的检查项
✅ 可选:禁止绕过规则
  • (对管理员也生效)✅
Include administrators
强烈推荐
  • Restrict who can push to matching branches(限制推送权限,可选)
    1. 点击 Create 或 Save changes

    ✅ 效果验证

    设置完成后:

    • 任何人执行 git push origin main 都会收到错误:
      ! [remote rejected] main -> main (protected branch hook declined)
      
    • 必须通过创建 Pull Request,获得审批并通过检查后,才能合并。

    🧩 额外建议(团队协作最佳实践)

    功能说明
    Code Owners设置 CODEOWNERS 文件,指定某些文件必须由特定人员审批
    Draft PR支持'草稿 PR',避免误合并
    自动删除源分支在合并 PR 后自动删除 feature 分支
    使用 squash merge保持 main 分支提交历史整洁

    示例:CODEOWNERS 文件(放在 .github/ 或根目录)

    # 根目录下的所有文件由 dev-team 审批
    * @team/dev-team
    
    # 后端代码由 backend 组审批
    src/backend/ @team/backend
    
    # 配置文件由 infra 组审批
    *.yml @team/infra
    

    🔐 权限说明

    • 你需要有 仓库管理员(Admin)权限 才能设置分支保护规则
    • 一旦启用 Include administrators,连管理员也不能直接 push

    ✅ 总结

    通过以下设置,即可禁止直接推送 main 分支:

    Settings → Branches → Add rule → Require a pull request before merging → Include administrators

    ✅ 这是现代软件开发的标准做法,能有效提升代码质量和协作规范。


    如果你使用的是 GitHub Enterprise 或 组织仓库,还可以通过 组织级策略 统一管理多个仓库的分支保护规则。

    目录

    1. ✅ 目标效果
    2. 🛠️ 设置步骤(以 GitHub 网页端为例)
    3. 第一步:进入仓库设置
    4. 第二步:添加分支保护规则
    5. ✅ 强制要求 Pull Request(核心设置)
    6. ✅ 可选:要求状态检查(如 CI 构建通过)
    7. ✅ 可选:禁止绕过规则
    8. ✅ 效果验证
    9. 🧩 额外建议(团队协作最佳实践)
    10. 示例:CODEOWNERS 文件(放在 .github/ 或根目录)
    11. 根目录下的所有文件由 dev-team 审批
    12. 后端代码由 backend 组审批
    13. 配置文件由 infra 组审批
    14. 🔐 权限说明
    15. ✅ 总结

    更多推荐文章

    查看全部
    • Spring Boot 获取 HTTP 请求参数
    • 大模型面试题精选与详细答案解析
    • 基于 ROS 的黑线循迹与激光跟随双模态视觉导航系统实战
    • Java SpringBoot+Vue 智能客服后台实战:从零搭建到生产部署
    • Java 部署:使用 Jenkins Pipeline 自动化构建项目
    • C++ 泛型编程与模板详解:从原理到工程实践
    • 基于 PSO 与 DWA 融合的无人机三维动态避障路径规划 (Matlab 实现)
    • Linux 多线程:深入互斥与同步机制
    • Python 人工智能入门指南
    • 2026 年度技术趋势预测:AI 从生成走向执行,八大方向重塑 IT 行业
    • AIGC 联动 PS 实现 Spine 2D 骨骼动画拆件
    • 手写 C++ TCP 服务器:自定义协议与粘包处理实战
    • 基于 AI 工具 2 小时开发微信小程序实战
    • 多种编程语言数组遍历实现对比
    • DeepSeek 与通义万相结合实现 AI 视频生成流程指南
    • GLM-4.6V-Flash-WEB vs InternVL:视觉模型部署效率对比
    • Homebrew 完全指南:从安装、换源加速到核心命令速查
    • OpenClaw 个人 AI 助理跨平台安装与配置教程
    • 《Agent Runtime 工程化》为什么你的 Agent Demo 永远上不了生产?
    • 二分答案专题实战:木材加工与砍树问题解析

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online