git log 默认只显示当前分支提交,找不到刚提交记录主因是不在目标分支或处于 detached head 状态;需用 --oneline、--graph --all --decorate、--author、--since 等参数增强可读性与过滤能力。

默认的 git log 基本没法直接用——它只输出完整哈希、作者、日期和消息,一行一条,翻十页都找不到你要的那次提交。
为什么 git log 找不到刚 commit 的记录
最常见原因是:你不在目标分支上,或者处于 detached HEAD 状态,又或者刚 git commit 但还没切回主分支就执行了命令。
- 运行
git status确认当前分支名和 HEAD 指向(比如HEAD -> main还是HEAD detached at abc123) - 如果刚在 feature 分支提交,却在 main 分支下查日志,自然看不到
-
git log默认只查当前分支可到达的提交,不跨分支自动合并显示
让 git log 显示清晰可读的提交列表
单靠默认输出几乎无法定位问题,必须加参数。几个高频组合直接抄作业:
-
git log --oneline:每条压缩成一行,哈希缩成 7 位,附带提交信息 -
git log --graph --all --decorate --oneline:画出所有分支的拓扑图,标出main、origin/main、v1.2.0等标签和分支指针 -
git log --date=short --oneline:把Mon Apr 29 09:22:15 2026 +0800缩成2026-04-29,省空间也易扫视
按人、文件、时间精准过滤日志
日常查问题不是看全部,而是“谁改了这个配置”“上线前 3 天谁合了 PR”“我自己的提交在哪”:
- 查某人:
git log --author="zhangsan"(注意双引号,大小写敏感) - 查某个文件历史:
git log -- path/to/config.yaml(--是分隔符,防止路径被当参数) - 查最近 3 天:
git log --since="3 days ago",也支持"2026-04-25"或"last Friday" - 组合用更准:
git log --author="lisi" --since="2026-04-25" --oneline
查看补丁内容或统计改动范围
光看提交信息不够,常需确认改了啥、改了多少:
-
git log -p -3:显示最近 3 次提交的完整 diff(含增删行) -
git log --stat:每次提交后加一行统计,如src/index.js | 12 +-,表示该文件改了 12 行 -
git log --shortstat:只输出汇总行(无文件列表),适合快速扫总量 - 想看单词级差异:
git log -U1 --word-diff,新增词用{+new+},删除词用[-old-]
真正容易被忽略的是路径过滤里的 -- 分隔符——漏掉它,Git 可能把 src/utils.js 当成选项解析,报错 unknown option;还有 --author 的大小写敏感性,写成 "ZhangSan" 就匹配不到 zhangsan 的提交。











