查看历史记录

在项目开发过程中,查看历史记录是极其高频的操作。无论是回顾开发进度、排查 Bug 引入的原因,还是寻找丢失的代码,都需要用到日志查看功能。

1. 基础查看命令

最常用的命令是 git log。在项目目录下输入:

git log

输出信息详解:

默认情况下,Git 会按时间倒序列出所有提交记录。每条记录包含以下关键信息:

  • Commit Hash(提交哈希):如 commit a1b2c3d...。这是一个 40 位的 SHA-1 字符串,作为该次提交的唯一身份证号(ID)。
  • Author(作者):谁执行了这次提交(显示名字和邮箱)。
  • Date(日期):提交发生的时间。
  • Message(提交说明):开发者编写的描述信息,解释本次提交做了什么。

操作提示:在长日志界面中,可以使用键盘的 上下箭头 滚动查看,按 q 键退出查看界面。

2. 简洁模式查看

默认的 git log 输出信息较多,浏览起来不够直观。使用 --oneline 参数可以将每个提交压缩为一行显示。

git log --oneline

输出示例:

a1b2c3d (HEAD -> main) 修复了登录页面的样式问题
e4f5g6h 更新 README 文档
i7j8k9l 初始化项目

这种模式非常适合快速浏览项目的大致演进路线。左侧是哈希值的简写(前 7 位),右侧是提交说明。

3. 查看具体的代码变动

如果你想查看每次提交具体修改了哪些代码,而不仅仅是提交说明,可以使用 -p 参数(patch 的缩写)。

git log -p

这将展示每次提交引入的差异,即增删了哪些代码行。

常用组合技巧:

通常我们不需要查看所有的代码变动,只想看最近几次的提交。可以结合数字 -n 使用:

git log -p -2   # 仅查看最近 2 次提交的详细差异

4. 查看文件变更统计

如果你不想看具体的代码细节,只想知道每次提交修改了哪些文件以及修改了多少行代码,可以使用 --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(-)

这能让你快速评估每次提交的工作量范围。

5. 查看分支演进图

在多人协作开发中,分支的合并历史往往错综复杂。使用 --graph 参数可以以 ASCII 字符图形的方式展示分支的走向。

推荐组合命令:

git log --oneline --graph --all
  • --graph:绘制分支图。
  • --all:显示所有分支(包括远程分支),否则默认只显示当前分支的历史。

输出示例:

*   a1b2c3d (HEAD -> main) Merge branch 'feature-login'
|\
| * e4f5g6h (feature-login) 完成登录功能
* | i7j8k9l 更新首页
|/
* l0m1n2o 初始化项目
*

这种视图非常直观,能让你清晰地看到分支是在哪里分叉,又是在哪里合并的。

6. 搜索与过滤历史

当项目历史很长时,快速定位特定提交非常重要。

按作者搜索

查看某位开发者提交的记录:

git log --author="Zhang San"

按关键字搜索

在提交说明中搜索包含特定关键字的提交:

git log --grep="Bug"

查看特定文件的历史

如果你只想看某个文件是如何一步步演变成现在的样子的,在命令末尾加上文件路径:

git log --oneline src/index.js

7. 查看某次提交的详情

如果你在 git log 中看到了某个提交的哈希值(例如 a1b2c3d),想查看该次提交的完整详情,可以使用 git show 命令:

git show a1b2c3d

这会显示该次提交的元数据以及具体的代码差异。

总结:

  • 浏览概览用 git log --oneline。
  • 排查问题用 git log -p。
  • 理清分支用 git log --graph。
  • 定位特定提交用 git show <hash>。