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

如何配置ESLint校验master分支与HEAD间代码并解决GitHub Action运行报错

问题根因

  • 部分 GitHub 仓库默认主分支名为 main 而非 master,硬写 origin/master 会因分支不存在触发报错
  • actions/checkout@v2 默认仅拉取当前触发工作流的分支,不会主动拉取远程主分支的提交记录,仅设置fetch-depth: 100无法解决分支不存在的问题
  • 当前工作流触发条件为on: push,不符合PR校验的场景需求,向主分支推送时origin/master...HEAD本身不存在提交差,逻辑也不成立

修复后完整配置

name: PR Lint Check
on: [pull_request]
jobs:
  lint-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 14.18.0
      - name: Install Node.js dependencies
        run: npm ci --ignore-scripts
      - name: Run ESLint on changed files
        shell: bash
        run: |
          TARGET_BRANCH=origin/${{ github.base_ref }}
          npx eslint --max-warnings 0 $(git diff $TARGET_BRANCH...HEAD --name-only --relative --diff-filter=MATR '*.js' '*.jsx' '*.ts' '*.tsx' | xargs)

关键修改说明

  • 触发条件改为pull_request,匹配PR校验场景,可通过GitHub内置变量github.base_ref直接获取PR的目标分支,无需硬写分支名
  • fetch-depth设置为0,拉取全量提交和分支信息,彻底解决找不到目标分支的问题
  • 动态拼接目标分支名,适配不同主分支名的仓库,避免硬编码分支名的兼容性问题
  • 将通配符从***.js修正为*.js,符合git diff的通配符规则,避免文件匹配异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:05