如何在多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)
使用步骤:
- 把上面的代码保存为
multi_git_log_sort.sh - 给脚本添加执行权限:
chmod +x multi_git_log_sort.sh - 进入存放所有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
相关产品推荐
相关产品推荐

