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

如何用正则表达式搜索Git提交信息并将内容及行号输出到文本文件

Git仓库正则搜索提交信息并导出的实现方案

核心命令模板

直接使用Git内置的--grep参数即可实现仅搜索提交信息的需求,完整的命令模板如下:

git log --grep="<自定义正则表达式>" [可选参数] --pretty=format:"%h | %an | %ad | %s" --date=short | nl > 匹配结果.txt

参数含义说明

  • --grep="<自定义正则表达式>":核心匹配参数,仅对提交信息(提交说明)做正则匹配,不会检索代码diff内容
  • 常用可选参数:
    • -E:启用扩展正则语法,减少不必要的转义字符
    • -i:匹配时忽略大小写
    • --all:检索仓库所有分支的提交,默认仅检索当前分支
    • --author="<作者名称>":额外限定提交作者的匹配规则
  • --pretty=format:"<格式规则>":自定义提交内容的输出格式,常用占位符说明:
    • %h:短格式的提交哈希值
    • %an:提交作者名称
    • %ad:提交日期
    • %s:提交信息的标题行,如需输出完整的多行提交信息,可替换为%B
  • --date=short:将提交日期格式简化为YYYY-MM-DD的短格式
  • | nl:给匹配到的每一条结果前添加连续行号
  • > 匹配结果.txt:将最终输出结果重定向保存到当前目录的匹配结果.txt文件中

实际使用示例

比如需要搜索所有提交信息中包含「修复」或「解决」字样的提交,忽略大小写,结果保存到fix_commit_log.txt,命令如下:
git log --grep="修复\|解决" -E -i --pretty=format:"%h | %an | %ad | %s" --date=short | nl > fix_commit_log.txt

特殊场景说明

  • 如果你需要行号为提交在全量提交列表中的全局序号,而非匹配结果的局部序号,可以先给全量提交加行号再做匹配,命令参考:
    git log --pretty=format:"%h | %an | %ad | %s" --date=short | nl | grep -E "<自定义正则表达式>" > 匹配结果.txt
  • 如果你在Windows PowerShell环境下执行,没有内置nl命令,可以将| nl替换为| ForEach-Object {$index=1} { "{0,5} {1}" -f $index++, $_ }实现相同的加行号效果。

注意:不要在git log后添加-p/--patch/--stat这类会输出diff、改动统计的参数,即可保证仅输出提交信息相关内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:24:03