在项目开发过程中,查看历史记录是极其高频的操作。无论是回顾开发进度、排查 Bug 引入的原因,还是寻找丢失的代码,都需要用到日志查看功能。
最常用的命令是 git log。在项目目录下输入:
git log
输出信息详解:
默认情况下,Git 会按时间倒序列出所有提交记录。每条记录包含以下关键信息:
操作提示:在长日志界面中,可以使用键盘的 上下箭头 滚动查看,按 q 键退出查看界面。
默认的 git log 输出信息较多,浏览起来不够直观。使用 --oneline 参数可以将每个提交压缩为一行显示。
git log --oneline
输出示例:
a1b2c3d (HEAD -> main) 修复了登录页面的样式问题
e4f5g6h 更新 README 文档
i7j8k9l 初始化项目
这种模式非常适合快速浏览项目的大致演进路线。左侧是哈希值的简写(前 7 位),右侧是提交说明。
如果你想查看每次提交具体修改了哪些代码,而不仅仅是提交说明,可以使用 -p 参数(patch 的缩写)。
git log -p
这将展示每次提交引入的差异,即增删了哪些代码行。
常用组合技巧:
通常我们不需要查看所有的代码变动,只想看最近几次的提交。可以结合数字 -n 使用:
git log -p -2 # 仅查看最近 2 次提交的详细差异
如果你不想看具体的代码细节,只想知道每次提交修改了哪些文件以及修改了多少行代码,可以使用 --stat 参数。
git log --stat
输出示例:
commit a1b2c3d...
Author: Zhang San <zhangsan@example.com>
Date: Mon Oct 23 10:00:00 2023 +0800
修复登录Bug
login.js | 10 +++++-----
style.css | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
这能让你快速评估每次提交的工作量范围。
在多人协作开发中,分支的合并历史往往错综复杂。使用 --graph 参数可以以 ASCII 字符图形的方式展示分支的走向。
推荐组合命令:
git log --oneline --graph --all
输出示例:
* a1b2c3d (HEAD -> main) Merge branch 'feature-login'
|\
| * e4f5g6h (feature-login) 完成登录功能
* | i7j8k9l 更新首页
|/
* l0m1n2o 初始化项目
*
这种视图非常直观,能让你清晰地看到分支是在哪里分叉,又是在哪里合并的。
当项目历史很长时,快速定位特定提交非常重要。
查看某位开发者提交的记录:
git log --author="Zhang San"
在提交说明中搜索包含特定关键字的提交:
git log --grep="Bug"
如果你只想看某个文件是如何一步步演变成现在的样子的,在命令末尾加上文件路径:
git log --oneline src/index.js
如果你在 git log 中看到了某个提交的哈希值(例如 a1b2c3d),想查看该次提交的完整详情,可以使用 git show 命令:
git show a1b2c3d
这会显示该次提交的元数据以及具体的代码差异。