首页/开发/Git 与协作速查/git log 按作者时间关键词筛选
Git 基础与命令88 条

git log 按作者时间关键词筛选

精炼历史查询:--author 查作者、--grep 查信息、--since/--until 限定时间窗,多个条件默认取交集。

Git 与协作速查开发更新于 2026-10-13

按条件筛选历史是什么

git log 支持在历史里按作者、提交信息关键词、时间窗等条件过滤,多个条件默认取交集,也就是「同时满足」。这套能力适合定位问题:知道大概是谁、什么时候、信息里大概写了什么,就能把候选范围从上万条缩到几条。

几种常用条件

--author 匹配作者名或邮箱,可以写正则;--grep 匹配整条提交信息,加 -i 忽略大小写;--since 与 --until 限定时间范围,支持相对时间写法;--no-merges 过滤掉合并提交。多个 --grep 之间默认是或关系,需要全部命中时必须显式加 --all-match。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
作者条件--author=<正则>
信息条件--grep=<正则>,多个之间默认或关系
时间条件--since / --until,支持相对时间
大小写默认区分大小写,加 -i 忽略
组合限制多个 --grep 要全部命中需加 --all-match

典型使用场景

  • 定位问题:按大概的作者与时间缩小嫌疑范围
  • 汇总变更:按关键词找出某类改动,整理成清单
  • 复盘节奏:用 --since 查看最近两周的提交情况
  • 过滤噪声:加 --no-merges 只看真实改动
  • 脚本统计:配合 --format 输出固定字段做汇总

常用示例

常用示例
git log --author='Li Wei' --oneline                # 某个作者的提交
git log --grep='timeout' --all-match -i            # 信息含关键词
git log --since='2 weeks ago' --oneline            # 最近两周
git log --grep='fix' --grep='login' --all-match    # 同时含两个关键词
git log --no-merges --since='2026-01-01' --until='2026-06-30'
git log --author='liwei.*' --oneline -20           # 用正则覆盖多个邮箱

常用筛选条件

条件匹配对象注意
--author作者名与邮箱支持正则,可覆盖多邮箱
--grep整条提交信息默认区分大小写
-i忽略大小写与 --grep 搭配最常用
--since / --until提交时间支持相对时间写法
--all-match多个条件的组合方式缺省是或关系
--grep 匹配的是整条提交信息,包括主题行与正文;默认区分大小写,加 -i 可以忽略大小写,避免漏掉写法不一致的记录。
同一人使用多个邮箱时,按单一值精确匹配会漏掉一部分。改用正则如 --author='liwei.*' 能一次覆盖多种写法,排查改动来源时更省事。
多个筛选条件可以叠加使用,例如同时限定作者与时间窗、再加一个关键词;条件越多范围越准,但也更容易因为写法不一致而漏掉记录,必要时先用宽松条件看清全貌。

易错点

  • 同一人多个邮箱时按单一值精确匹配会漏,改用正则如 --author='liwei.*'
  • 多个 --grep 默认是或关系,要全部命中必须显式加 --all-match
  • --since 依据提交时间判断,跨时区或 amend 过的时间可能不符合直觉
  • 只看时间范围不看作者容易漏掉同一问题的其它提交,多条件组合更可靠

数据来源与参考

  • Git 官方文档:git-log(--author/--grep/--since/--all-match)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌