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

如何为项目所有文件执行git log --stat并将结果输出到文件?

实现项目全文件Git修改统计的方法

当然可以!你完全可以遍历项目中所有被Git追踪的文件,执行git log --stat命令并把结果汇总到输出文件里。下面是几种实用的实现方式,适配不同的统计需求:

1. 基础版:遍历所有文件并汇总修改记录

如果你使用Bash终端(Linux/macOS原生终端、Windows的WSL或Git Bash都可以),直接运行这段命令就能生成全文件的统计日志:

for file in $(git ls-files); do
    # 写入文件标识,方便区分不同文件的统计结果
    echo "=== 统计文件: $file ===" >> git_full_stats.log
    # 执行git log --stat并追加到日志文件
    git log --stat "$file" >> git_full_stats.log
    # 添加分隔线,提升日志可读性
    echo -e "\n------------------------\n" >> git_full_stats.log
done

运行完成后,当前仓库根目录下会生成git_full_stats.log文件,里面包含每个文件的所有修改记录详情。

2. 进阶版:限定时间范围统计

如果只需要过去几年的统计数据,可以给git log加上--since参数缩小范围。比如要统计过去3年的记录,命令如下:

for file in $(git ls-files); do
    echo "=== 统计文件: $file (过去3年) ===" >> git_stats_last3years.log
    git log --since="3 years ago" --stat "$file" >> git_stats_last3years.log
    echo -e "\n------------------------\n" >> git_stats_last3years.log
done

3. 团队分析版:按作者分组统计

针对团队工作统计的需求,你可以结合git shortlog来按作者汇总贡献,更直观地看到每个成员对不同文件的修改情况:

for file in $(git ls-files); do
    echo "=== 文件: $file 的作者贡献统计 ===" >> git_team_stats.log
    # -sn 参数会按提交次数排序,显示作者名和提交数,搭配--stat展示修改详情
    git shortlog -sn --stat "$file" >> git_team_stats.log
    echo -e "\n------------------------\n" >> git_team_stats.log
done

一些实用小技巧

  • 排除不需要统计的目录:如果仓库里有node_modules、dist这类无需追踪的目录,可以用grep -v过滤,比如:git ls-files | grep -v "node_modules/"
  • 加速统计:如果文件数量极多,可以考虑分目录统计,比如只遍历src目录:for file in $(git ls-files src/); do ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:58:51