如何统计Git仓库一年内(2020年1-12月)新增与删除代码总行数
嘿,这个问题我太熟悉了!Git自带的日志统计功能就能轻松搞定代码增删行数的统计,下面分两种场景给你一步步说明:
统计Git仓库代码增删行数的实用方法
一、统计过去一年内的代码新增/删除总行数
你可以直接用git log结合时间筛选和文本处理工具来汇总数据,执行下面的命令就行:
git log --since="1 year ago" --until="today" --shortstat | awk '{added += $4; deleted += $6} END {print "总新增行数: " added "\n总删除行数: " deleted}'
命令拆解:
--since="1 year ago" --until="today":限定统计的时间范围是从一年前到今天--shortstat:让Git只输出每个提交的精简统计信息(格式是「X files changed, Y insertions(+), Z deletions(-)」)awk:用来遍历所有提交的统计行,自动累加新增行数($4)和删除行数($6),最后输出总和
二、统计2020年1月至12月的代码增删行数
1. 全年总行数统计
只需要调整时间范围参数,把--since和--until改成2020年的起止日期:
git log --since="2020-01-01" --until="2020-12-31" --shortstat | awk '{added += $4; deleted += $6} END {print "2020年总新增行数: " added "\n2020年总删除行数: " deleted}'
2. 每月细分统计
如果需要看2020年每个月的具体数据,可以用一个简单的shell循环脚本,自动遍历每个月的时间范围:
for month in {1..12}; do # 构建当月的起始日期 start="2020-$month-01" # 构建当月的结束日期(下个月的第一天) if [ $month -eq 12 ]; then end="2021-01-01" else end="2020-$(($month+1))-01" fi echo "=== 2020年$month月代码统计 ===" git log --since="$start" --until="$end" --shortstat | awk '{added += $4; deleted += $6} END {print "新增行数: " added " | 删除行数: " deleted}' done
进阶技巧:排除特定文件/目录
如果你的仓库里有不需要统计的文件(比如日志、自动生成的配置文件),可以在命令末尾加上路径筛选规则,比如排除所有.log文件和config目录下的.json文件:
git log --since="2020-01-01" --until="2020-12-31" --shortstat -- . ':!*.log' ':!config/*.json' | awk '{added += $4; deleted += $6} END {print "2020年总新增行数: " added "\n2020年总删除行数: " deleted}'
注意事项
- 执行命令前,记得先切换到目标仓库的本地目录,并且用
git pull拉取最新的提交,确保统计数据完整 - 如果要统计特定分支的代码,先通过
git checkout <分支名>切换到对应分支再执行命令
内容的提问来源于stack exchange,提问作者Maria




