git log --oneline --date=short最适合日常快速浏览,每行显示7位哈希缩写和提交标题,日期格式简化为2024-06-10,省空间、易定位。

默认的 git log 基本没法直接用——它只输出完整 hash、作者、日期和提交信息,一行一个,翻半天找不到目标提交。
git log --oneline --date=short 最适合日常快速浏览
这是你打开终端后第一句该敲的命令。它把每条提交压成一行,日期缩成 2024-06-10 格式,省空间、易定位。
-
--oneline自动截取前 7 位 commit hash,比完整 SHA 好读得多 -
--date=short避免Mon Jun 10 14:22:31 2024 +0800这种冗长格式 - 组合起来:
git log --oneline --date=short,一眼扫出最近 20 次谁干了啥 - 如果仓库刚 clone 下来且没提交过,
git log会直接报错 “fatal: your current branch 'main' does not have any commits yet”,不是命令错了,是真没历史
git log --author="name" --since="7 days ago" 精准筛选人+时间范围
查“谁在最近一周改了登录逻辑”,靠肉眼翻日志不现实,必须加条件过滤。
-
--author大小写敏感,带空格必须用双引号,比如--author="Zhang San" -
--since支持自然语言:"last week"、"2024-06-01"、"7 days ago"都行 - 组合示例:
git log --author="lisi" --since="2024-06-01" --oneline --grep="login",只看李四从 6 月 1 日起、提交信息含 “login” 的记录 - 注意:如果当前在 detached HEAD 状态,
git log默认只显示当前 commit 及其祖先,不会包含其他分支的提交,先git status看提示
git log --follow --oneline path/to/file 查文件重命名后的完整历史
文件被 git mv 或手动重命名后,普通 git log src/utils/date.js 只能查到 rename 之后的提交,之前的历史就断了。
- 加
--follow才能串起整个生命周期,比如git log --follow --oneline src/utils/time.js - 路径必须是工作区中当前存在的相对路径,不能是绝对路径,也不能用通配符(
src/**/*.js不生效) - 如果文件已删除但还想查它的历史,得加
--all:git log --all --follow --oneline -- path/to/deleted-file.js -
--follow只对单个文件有效,不能用于目录;想查整个src/下所有变更,去掉它,改用git log --oneline src/
git log -S "API_TIMEOUT" -- src/config.js 快速定位某段代码的首次/末次出现
你想知道 API_TIMEOUT 是哪次提交引入的,或者哪次把它从 5000 改成 10000 的,别翻 diff,用 -S。
-
-S(pickaxe)搜索的是“字符串在 diff 中新增或删除的那一刻”,不是全文匹配,所以精准对应代码变更点 - 必须指定路径,否则全仓库扫,大项目极慢;
git log -S "10000" -- src/config.js比git log -S "10000"快几个数量级 - 如果要搜正则模式(比如匹配所有 timeout 相关数字),换
-G "timeout.*\d+",但它只扫描 diff 行,不扫注释或字符串字面量内部 -
--grep只搜 commit message,-S和-G才真正搜代码变动,别混用
最容易被忽略的是:git log 默认走 pager(通常是 less),但某些终端或 CI 环境里 pager 会卡住或截断输出。遇到输出不全,直接加 --no-pager:git --no-pager log --oneline -20,稳。











