You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Action中向受保护的main分支执行推送操作?

你遇到的报错是因为main分支设置了保护规则,要求至少1个拥有写入权限的审核者审批才能合并代码,GitHub Action默认的GITHUB_TOKEN没有权限绕过这类分支保护限制,你可以通过以下方案解决:

方案一:使用个人访问令牌(PAT)绕过保护规则(个人/小型项目推荐)

  • 第一步:生成具备仓库读写权限的PAT
    进入GitHub个人主页→设置→开发者设置→个人访问令牌,勾选repo全量权限后生成,保存生成的令牌值。
  • 第二步:将PAT存入仓库机密
    进入对应仓库的设置→Secrets and variables→Actions,新建一个名为GH_PAT的机密,值填入上一步生成的令牌。
  • 第三步:修改工作流配置
    1. 调整checkout步骤,指定拉取代码用的令牌为你自定义的PAT:
    - name: Checkout
      uses: actions/checkout@v2
      with:
        persist-credentials: false
        token: ${{ secrets.GH_PAT }}
    
    1. 调整semantic-release步骤的环境变量,将GITHUB_TOKEN替换为自定义PAT:
    - name: Semantic release
      env:
        GITHUB_TOKEN: ${{ secrets.GH_PAT }}
        NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        HUSKY: 0
      run: chmod +x script/prepare-release.sh && npx semantic-release
    
  • 第四步:调整分支保护规则
    进入仓库设置→分支→分支保护规则,找到main分支对应的规则,在「允许指定的人员、团队和应用绕过分支保护规则」的选项中,添加你生成PAT的GitHub账号。

方案二:使用GitHub App生成访问令牌(组织级项目推荐)

如果是组织管理的项目,不想绑定个人账号的PAT,可以创建专门的GitHub App,授予对应仓库的读写权限,在工作流中通过App生成临时访问令牌使用,流程和方案一逻辑一致,只是令牌来源换成了组织级的应用。

注意:所有令牌必须存入仓库Secrets中,严禁明文写在公开的工作流配置文件内

内容的提问来源于stack exchange,提问作者Wade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:36:00