跳到主要内容
极客日志极客日志面向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/10/24107 浏览

可以通过 设置 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. ✅ 总结

    更多推荐文章

    查看全部
    • OpenClaw 接入自定义模型及 WebUI 智能操作实战
    • 前后端共用校验规则方案:后端为最终权威
    • Ubuntu 20.04 手动安装与配置 Ollama 本地服务
    • Llama3 快速体验:Groq 平台 4 种接入方案与性能分析
    • Xcode 7 中手动链接 .dylib 库的两种方案
    • Go Channel 深入解析:状态、底层原理与工程实践
    • Spring AI 实现多模型共存:基于 OpenAI 协议调用 ChatGPT 与千问
    • LLM 模型微调:PEFT 与 QLoRA 技术总结
    • 逻辑回归算法详解:原理、代码与可视化
    • Shannon:利用 AI 自动挖掘 Web 应用真实漏洞
    • Linux Socket 套接字编程基础概念
    • 十五五规划下 Java 程序员的职业机遇与行业新赛道
    • 无需复杂数学:轻松理解大模型基本原理
    • 用 UI UX Pro Max 驱动现代前端 UI 工作流
    • LangChain 基本概念与实战入门
    • 两种实用方法删除 Excel 重复行:Python + VBA
    • 数据洞察系统 InsightPilot 技术解析与架构分析
    • Java 网络编程核心:Socket、TCP/UDP 与 HTTP 实战
    • 2026最强AI图像生成器测评!10款工具真实对比谁最强
    • JavaScript 与 TypeScript 核心区别、优缺点及语法差异详解

    相关免费在线工具

    • 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