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

如何实现自动拒绝修改指定生成文件的GitHub PR,避免无效改动

解决方案

方案1:配置.gitattributes标记自动生成文件(轻量化提示方案)

这是GitHub原生支持的功能,你只需要在仓库根目录新建.gitattributes文件,添加规则标记你的自动生成文件即可,示例配置:

# 标记所有HTML文件为自动生成文件
*.html linguist-generated=true
# 若生成文件存放在特定目录,比如public目录下所有内容,可按如下规则配置
public/** linguist-generated=true

添加该配置后,GitHub在PR页面会默认折叠所有这类标记文件的改动,同时会给提交者显示「该文件为自动生成文件,不建议手动修改」的提示,能从前端层面先过滤掉一部分误改提交。
该方案仅做提示不会主动拦截PR,配合方案2使用效果最佳。

方案2:配置GitHub Actions自动拦截不符合要求的PR

这是强管控方案,能直接拦截改动了生成文件的PR,同时自动给提交者发送友好提示。
操作步骤:

  1. 在仓库下新建.github/workflows/block-modify-generated-files.yml文件,填入以下配置,你可以根据自己的实际生成文件路径修改匹配规则:
name: Block changes to generated files
on:
  pull_request:
    types: [opened, synchronize, reopened]
permissions:
  contents: read
  pull-requests: write
jobs:
  check-files:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v41
        with:
          # 此处替换为你自己的自动生成文件匹配规则
          files: |
            *.html
            public/**
      - name: Comment and block PR if generated files are modified
        if: steps.changed-files.outputs.any_changed == 'true'
        uses: thollander/actions-comment-pull-request@v2
        with:
          message: |
            您好,本次PR改动了自动生成的站点文件:
            ${{ steps.changed-files.outputs.all_changed_files }}
            这些文件是由GitHub Actions自动构建生成的,手动修改的内容会在下一次站点更新时被覆盖,请修改对应的构建模板文件后重新提交PR,感谢你的贡献。
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Fail check if generated files are modified
        if: steps.changed-files.outputs.any_changed == 'true'
        run: exit 1
  1. 配置仓库分支保护规则:进入仓库Settings → Branches → Branch protection rules,给你的主分支添加保护规则,勾选「Require status checks to pass before merging」,把刚才新建的check-files工作流设置为必须通过的检查项即可。
    配置完成后,只要PR改动了你指定的自动生成文件,工作流就会自动失败,PR无法合并,同时会自动给PR发送提示评论告知用户原因。

可选补充方案:配置PR提交模板

你还可以在仓库里添加PR提交模板,在模板最开头醒目提示不要修改自动生成文件,进一步降低误提交概率:
在.github/PULL_REQUEST_TEMPLATE.md里添加:

⚠️ 注意:请勿手动修改根目录下的HTML文件或public目录下的所有文件,这些文件为自动生成文件,修改会被覆盖,请调整对应的构建模板文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:09:03