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

Git如何忽略特定文件的新增行数,仅统计其他文件?

哈哈,这个场景太熟悉了!我大学组队做前端项目时,每次提交package-lock.json都能把LOC(代码行数)拉爆,明明没写几行实际代码,贡献分却虚高,对队友确实不公平。分享几个亲测有效的解决方法:

方法1:临时统计时手动排除文件

如果只是偶尔需要统计某次提交或当前工作区的新增行数,直接用git diff加排除参数就行:

  • 统计单个提交的新增/删除行数(替换<commit-hash>为目标提交的哈希值):
git diff --shortstat <commit-hash>^ <commit-hash> -- . ':(exclude)package-lock.json'
  • 统计当前工作区和上次提交(HEAD)的差异:
git diff --shortstat HEAD -- . ':(exclude)package-lock.json'
  • 如果需要看每个文件的详细行数统计,把--shortstat换成--numstat:
git diff --numstat HEAD -- . ':(exclude)package-lock.json'

解释下:-- .指定统计当前目录下所有文件,:(exclude)package-lock.json就是明确排除这个自动生成的文件,--shortstat会输出简洁的汇总结果,一目了然。

方法2:统计分支累计贡献时排除文件

如果要统计你在开发分支上的总新增行数(比如和主分支对比),可以用:

git diff main..your-feature-branch -- . ':(exclude)package-lock.json' --shortstat

把main换成你们项目的主分支名,your-feature-branch换成你的开发分支即可。

方法3:配置永久忽略规则,一劳永逸

不想每次都手动加参数?可以在项目里配置.gitattributes,让Git和相关统计工具自动忽略这类文件:

  1. 在项目根目录创建或编辑.gitattributes文件,添加一行:
package-lock.json linguist-vendored

linguist-vendored是Git Linguist工具的标记,会把这个文件标记为“第三方依赖文件”,不管是Git自带的统计,还是GitHub贡献图、课程用的统计脚本,基本都会识别这个标记并忽略它的行数。
2. 提交这个.gitattributes文件到仓库,这样所有队友都能用上这个规则,避免后续再出现同样的问题。

补充:如果课程用第三方统计工具(比如cloc)

如果你们课程用cloc这类专门的代码行数统计工具,也可以轻松排除文件:

  • 单次运行时排除:
cloc . --exclude-file=package-lock.json
  • 永久忽略:创建.clocignore文件,把package-lock.json写进去,之后运行cloc就会自动忽略它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:01