GitHub Enterprise合并时如何排除文件/目录不统计代码增减量?
解决GitHub Enterprise Server网页端PR代码行数统计排除指定文件的问题
为啥之前改.gitattributes没用?.gitattributes里的diff=nodiff或-diff只管差异显示,不会让GHES的PR行数统计忽略这些文件。网页端的统计逻辑是默认遍历所有变更文件,不管你设置了什么diff规则。
实际可行的解决办法:
1. 用仓库设置直接排除文件(优先推荐)
如果你的GHES版本是3.7及以上,直接在仓库里配置:
- 进入仓库的
Settings→ 找到Code and automation下的Repository settings(不同版本位置可能略变,找类似“Diff statistics”的选项) - 在
Exclude files from diff statistics里添加要排除的规则,语法和.gitignore一样,比如:
保存后,新的PR统计就会自动忽略这些文件。node_modules/** generated/**/*.json *.lock
2. 用GitHub Actions做自定义统计
如果GHES版本太低,没有上面的设置,或者需要更灵活的统计逻辑,写个简单的Action:
- 在仓库里创建
.github/workflows/line-count.yml文件,内容如下:
这个Action会在PR打开时自动计算排除指定文件后的行数,然后评论到PR里,直接替代GHES默认的统计。name: PR 精准行数统计 on: [pull_request] jobs: count-lines: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: 计算变更行数 run: | # 排除指定文件,统计增减行数 git diff --numstat ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} \ -- . ':!node_modules' ':!generated' ':!*.lock' | awk '{add += $1; subs += $2} END {print "新增行数: " add "\n删除行数: " subs}' - name: 把统计结果评论到PR uses: actions/github-script@v7 with: script: | const output = await exec.getOutput('计算变更行数'); github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `精准代码行数统计:\n\`\`\`\n${output}\n\`\`\`` });
3. 找管理员配置全局规则
如果是全公司都需要排除某些类型的文件,联系GHES管理员,在管理控制台里配置全局的diff统计排除规则,这样所有仓库都会生效。
验证一下:设置完后开个新PR,或者刷新现有PR,看看网页端的统计有没有变化;用Action的话直接看PR评论就行。
内容的提问来源于stack exchange,提问作者Petro
相关产品推荐
相关产品推荐

