直接运行 git log 可查看当前分支提交历史,但默认仅显示哈希、作者、日期和提交信息;常用组合包括 --oneline(单行简洁)、--graph --all --decorate(分支图谱)、-p(完整 diff)、--stat(文件变更统计),配合 --author、--since、-S 等参数可精准过滤。

git log 基础用法怎么看提交历史
直接运行 git log 就能列出当前分支所有提交,但默认只显示哈希、作者、日期和提交信息,不显示具体改了哪些文件或代码行。实际排查问题时往往不够用。
常用组合建议:
-
git log --oneline:一行一条,适合快速扫视提交节奏 -
git log --graph --all --decorate --oneline:带分支图谱,看清合并关系(尤其多人协作时) -
git log -p:显示每次提交的完整 diff,适合确认某次修改是否包含某段逻辑 -
git log --stat:只看文件增删改行数,轻量级变更概览
查某次提交具体改了什么文件和内容
用 git show 最直接。它默认等价于 git show ,会展示该次提交引入的所有变更。
如果只想看改了哪些文件,不关心代码细节:
-
git show --name-only:只列文件路径 -
git show --name-status:额外标出是 A(新增)、M(修改)、D(删除)
注意: 可以缩写为前 7 位,比如 git show a1b2c3d;如果记不清哈希,先用 git log --oneline 快速找。
按作者、日期、关键词过滤提交记录
查别人改的、某天之后的、或带特定关键字的提交,靠 git log 的筛选参数就能搞定,不用导出再 grep。
-
git log --author="John":匹配作者名(支持正则,如--author="joh?n") -
git log --since="2 weeks ago"或--after="2024-01-01":按时间范围过滤 -
git log -S"functionName":搜索代码中新增或删除某字符串的提交(适合定位某函数首次出现或被移除) -
git log -G"if.*error":用正则匹配 diff 内容(比-S更灵活,但更慢)
多个条件可叠加,比如 git log --author="Alice" --since="2024-05-01" -S"timeout"。
为什么 git log 看不到刚 commit 的记录
常见原因就两个:当前不在目标分支,或没 push 到远程但误以为“应该有”。git log 只查本地当前 HEAD 所在分支的历史,跟远程无关。
- 先确认当前分支:
git branch(当前分支前有 * 号) - 如果刚切到别的分支,用
git checkout或git switch切回去 - 想查所有本地分支的提交:
git log --all - 想查远程分支的记录,得先
git fetch,再git log origin/main
最容易忽略的是:软重置(git reset --soft)后提交还在 reflog 里,但 git log 不显示——这时得用 git reflog 找回来。











