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

如何快速获取Git指定文件集中最新提交文件的时间戳?

高效获取Git指定文件集的最新提交时间戳

你的核心问题是多次启动git log进程导致的开销——之前的命令要启动261次git log,每次进程启动都有额外消耗,这是耗时30秒的关键。下面是能把耗时压缩到1-2秒内的解决方案:

优化命令

git ls-files -z -- . ':!:*.md' ':!:*.bin' | xargs -0 git log --reverse --format=%ct --name-only -- | awk '
    /^[0-9]+$/ { current_ct = $0; next }
    { file = $0; latest_ct[file] = current_ct }
    END {
        max_ct = 0; max_file = ""
        for (file in latest_ct) {
            if (latest_ct[file] > max_ct) {
                max_ct = latest_ct[file]
                max_file = file
            }
        }
        print max_ct, max_file
    }
'

为什么这更快?

  1. 单次Git调用:取消了xargs -n1,一次性把所有筛选后的文件传给git log,只启动1次Git进程,彻底消除了多次进程启动的开销。
  2. 高效输出处理:
    • --reverse让提交按时间从旧到新输出,这样每个文件最后一次出现的时间戳就是它的最新提交时间,无需额外排序。
    • 用awk直接处理git log的输出,不需要paste等额外工具,逻辑简洁且处理速度快。

扩展:查看所有文件的最新提交时间

如果需要验证每个文件的最新时间,可修改awk部分,输出所有文件及其时间戳:

git ls-files -z -- . ':!:*.md' ':!:*.bin' | xargs -0 git log --reverse --format=%ct --name-only -- | awk '
    /^[0-9]+$/ { current_ct = $0; next }
    { latest_ct[$0] = current_ct }
    END { for (file in latest_ct) print latest_ct[file], file }
'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:31