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

如何过滤git log --numstat中修改大量文件的提交?

解决git log过滤修改大量文件提交的方法

你可以通过把git log --numstat的输出管道给awk脚本,过滤掉修改文件数超过指定阈值的提交,具体命令如下:

git log --numstat | awk '
    BEGIN { commit_line = ""; file_count = 0 }
    /^commit / {
        if (commit_line != "" && file_count < 7000) {
            print commit_line
            print body
        }
        commit_line = $0
        body = ""
        file_count = 0
        next
    }
    /^[0-9-]/ {
        file_count++
        next
    }
    { body = body $0 "\n" }
    END {
        if (commit_line != "" && file_count < 7000) {
            print commit_line
            print body
        }
    }
'

这个脚本的逻辑是:

  • 识别每个提交的起始行(以commit 开头)
  • 统计该提交对应的修改文件数量(通过--numstat输出中带数字的行计数)
  • 只输出修改文件数小于7000的提交完整信息

如果需要调整阈值,把脚本里的7000改成你想要的数字即可。

要是你只需要看提交哈希和基本提交信息,不需要详细的文件统计,也可以用更直观的方法:

git log --format="%H %s" | while read hash msg; do
    file_count=$(git diff --name-only $hash^! | wc -l)
    if [ $file_count -lt 7000 ]; then
        echo "$hash $msg"
    fi
done

这个方法会逐个提交计算修改文件数,虽然速度稍慢,但逻辑更容易理解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:22:34