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

如何在多Git仓库中执行git log -G FooBar命令并按提交时间排序输出结果

在多Git仓库中批量执行git log并按日期排序

我刚好处理过类似的需求,给你一个实用的bash脚本方案,能一次性遍历所有仓库、收集符合条件的提交,再统一按日期排序:

#!/bin/bash
# 遍历当前目录下所有包含.git的子目录(即Git仓库)
for repo in */; do
    # 检查是否为Git仓库
    if [ -d "$repo/.git" ]; then
        # 执行git log,输出格式包含:提交日期(ISO格式)、提交信息、仓库名、提交哈希
        git -C "$repo" log --pretty=format:"%ci | %s | $repo | %H" -G FooBar
    fi
done | sort

脚本说明:

  • git -C "$repo":直接指定仓库目录执行git命令,避免频繁cd切换目录,更高效安全
  • --pretty=format:"%ci | %s | $repo | %H":自定义输出格式,其中:
    • %ci:ISO标准的提交日期(如2024-05-20 14:30:00 +0800),这是实现排序的关键,因为ISO格式的日期字符串直接用sort就能按时间顺序排列
    • %s:提交信息标题
    • $repo:仓库名称,方便你知道提交来自哪个仓库
    • %H:完整的提交哈希,后续可以用它查看具体变更
  • -G FooBar:你的原始搜索条件,筛选出代码变更中包含FooBar的提交
  • | sort:将所有仓库的输出汇总后按日期排序(默认升序,即最早的提交在前;如果要降序,改成| sort -r)

使用步骤:

  1. 把上面的代码保存为multi_git_log_sort.sh
  2. 给脚本添加执行权限:chmod +x multi_git_log_sort.sh
  3. 进入存放所有Git仓库的父目录,运行脚本:./multi_git_log_sort.sh

可选优化:

  • 如果只想看最近N个提交,给git log加-n N参数,比如git -C "$repo" log -n 10 ...
  • 想把结果保存到文件,在脚本末尾加> sorted_git_log.txt
  • 如果需要查看提交的具体变更内容,可以先记录下目标提交的哈希,然后在对应仓库执行git show <提交哈希>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:22:49