hexon
发布于 2025-07-13 / 3 阅读
0

四、Git 日志查看指南

本文内容:

  • git log的常用参数

  • 多分支情况下如何查看日志

  • gitk图形化的方式查看日志

1. git log 命令基础

1.1 概述

我们在之前的提交过程中,会时不时的使用git log命令查看提交的历史。git log命令在日常开发中是非常常用的,下面介绍与它相关的一些常用的参数。

1.2 常用参数详解

1.2.1 --oneline 参数

主要特点:

  • 简洁显示: 每个提交只显示一行信息

  • 格式: <缩短的提交哈希> <提交信息标题>

  • 不显示: 作者、日期等详细信息

$ git log --oneline
4fec02f (HEAD -> master) Move readme to readme.md
955e38a Add refering projects
b284333 Add js
d428362 Add style.css
fb9dd79 Add index + logo
695a4fc Add readme

1.2.2 -n 参数

可看最近n个提交:

$ git log -n4
commit 4fec02faed40feee8a7769167162c1500f96500e (HEAD -> master)
Author: hexon <hexon1958@gmail.com>
Date:   Sat Jun 28 17:53:27 2025 +0800
​
    Move readme to readme.md
​
commit 955e38ae3b7db6825b0ac0ffd023e4eb2a68b078
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:25:01 2025 +0800
​
    Add refering projects
​
commit b284333cb67961eb3310f78e9ca9c226ce3b8063
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:16:14 2025 +0800
​
    Add js
​
commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:06:33 2025 +0800
​
    Add style.css
:...skipping...
commit 4fec02faed40feee8a7769167162c1500f96500e (HEAD -> master)
Author: hexon <hexon1958@gmail.com>
Date:   Sat Jun 28 17:53:27 2025 +0800
​
    Move readme to readme.md
​
commit 955e38ae3b7db6825b0ac0ffd023e4eb2a68b078
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:25:01 2025 +0800
​
    Add refering projects
​
commit b284333cb67961eb3310f78e9ca9c226ce3b8063
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:16:14 2025 +0800
​
    Add js
​
commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:06:33 2025 +0800
​
    Add style.css
​

也可以与oneline一起使用:

$ git log -n4 --oneline
4fec02f (HEAD -> master) Move readme to readme.md
955e38a Add refering projects
b284333 Add js
d428362 Add style.css

2. 多分支日志查看

2.1 分支信息查看

首先,我们来了解一个新命令:git branch -v,它是一个用于查看本地 Git 分支及其最新提交信息的命令。格式如下:

* <当前分支名> <缩短的提交哈希> <提交信息>
  其他分支名   <缩短的提交哈希> <提交信息>

* 标记当前所在的分支,显示的是最新提交的简短信息。

2.2 创建测试分支

下面我们基于某个提交来创建一个临时分支:

$ git log -n4
commit 4fec02faed40feee8a7769167162c1500f96500e (HEAD -> master)
Author: hexon <hexon1958@gmail.com>
Date:   Sat Jun 28 17:53:27 2025 +0800
​
    Move readme to readme.md
​
commit 955e38ae3b7db6825b0ac0ffd023e4eb2a68b078
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:25:01 2025 +0800
​
    Add refering projects
​
commit b284333cb67961eb3310f78e9ca9c226ce3b8063
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:16:14 2025 +0800
​
    Add js
​
commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:06:33 2025 +0800
​
    Add style.css
​
$ git branch -v
* master 4fec02f Move readme to readme.md
​
$ git checkout -b temp d42836287e39ab5470cfc6
Switched to a new branch 'temp'
​
$ vi readme
​
$ git commit -am'Add test'
warning: in the working copy of 'readme', LF will be replaced by CRLF the next time Git touches it
[temp 097b183] Add test
 1 file changed, 12 insertions(+)
​
$ git branch -av
  master 4fec02f Move readme to readme.md
* temp   097b183 Add test
​

这里我们用了两个新的命令:

  • git commit -am:不推荐使用,这里只是演示。适合快速提交已跟踪文件的修改,但不能处理新文件。如果涉及新文件,仍需手动 git add

  • git branch -av:显示 所有分支(本地 + 远程跟踪分支) 的详细信息。

2.3 单分支日志查看

如果直接使用 git log查看日志我们只能查看当前分支的日志:

$ git log
commit 097b183731970ac0dcc9f94051e354e25ef8f0be (HEAD -> temp)
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jul 13 06:36:44 2025 +0800
​
    Add test
​
commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:06:33 2025 +0800
​
    Add style.css
​
commit fb9dd79bb07a244f379c482457906c7f8fd009df
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 10:59:51 2025 +0800
​
    Add index + logo
​
commit 695a4fc77a3be0dcfbf1c91cb86edb864ea4fe00
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 10:10:21 2025 +0800
​
    Add readme
​

2.4 全部分支日志查看

使用 git log --all就可看所有分支的了:

$ git log --all
commit 097b183731970ac0dcc9f94051e354e25ef8f0be (HEAD -> temp)
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jul 13 06:36:44 2025 +0800
​
    Add test
​
commit 4fec02faed40feee8a7769167162c1500f96500e (master)
Author: hexon <hexon1958@gmail.com>
Date:   Sat Jun 28 17:53:27 2025 +0800
​
    Move readme to readme.md
​
commit 955e38ae3b7db6825b0ac0ffd023e4eb2a68b078
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:25:01 2025 +0800
​
    Add refering projects
​
commit b284333cb67961eb3310f78e9ca9c226ce3b8063
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:16:14 2025 +0800
​
    Add js
​
commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 11:06:33 2025 +0800
​
    Add style.css
​
commit fb9dd79bb07a244f379c482457906c7f8fd009df
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 10:59:51 2025 +0800
​
    Add index + logo
​
commit 695a4fc77a3be0dcfbf1c91cb86edb864ea4fe00
Author: hexon <hexon1958@gmail.com>
Date:   Sun Jun 22 10:10:21 2025 +0800
​
    Add readme

2.5 图形化显示分支历史

但这个看起来不是很直观,看不到演进历史(即temp分支的派生),因此通过会加上一个--graph选项,来以图形化的形式呈现:

$ git log --all --graph
* commit 097b183731970ac0dcc9f94051e354e25ef8f0be (HEAD -> temp)
| Author: hexon <hexon1958@gmail.com>
| Date:   Sun Jul 13 06:36:44 2025 +0800
|
|     Add test
|
| * commit 4fec02faed40feee8a7769167162c1500f96500e (master)
| | Author: hexon <hexon1958@gmail.com>
| | Date:   Sat Jun 28 17:53:27 2025 +0800
|
| |     Move readme to readme.md
| |
| * commit 955e38ae3b7db6825b0ac0ffd023e4eb2a68b078
| | Author: hexon <hexon1958@gmail.com>
| | Date:   Sun Jun 22 11:25:01 2025 +0800
|
| |     Add refering projects
| |
| * commit b284333cb67961eb3310f78e9ca9c226ce3b8063
|/  Author: hexon <hexon1958@gmail.com>
|   Date:   Sun Jun 22 11:16:14 2025 +0800
|
|       Add js
|
* commit d42836287e39ab5470cfc668afcfda7dbf3e73ff
| Author: hexon <hexon1958@gmail.com>
| Date:   Sun Jun 22 11:06:33 2025 +0800
|
|     Add style.css
|
* commit fb9dd79bb07a244f379c482457906c7f8fd009df
| Author: hexon <hexon1958@gmail.com>
| Date:   Sun Jun 22 10:59:51 2025 +0800
|
|     Add index + logo
|
* commit 695a4fc77a3be0dcfbf1c91cb86edb864ea4fe00
  Author: hexon <hexon1958@gmail.com>
  Date:   Sun Jun 22 10:10:21 2025 +0800
​
      Add readme
​

由上面可看到temp分支是由d42836287e39ab5470cf这次提交演进而来的。相当于temp分支从d42836287e39ab5470cf这次提交后,直接就是097b183731970ac0dcc9f9405这次提交了。而master分支后面还是有几次提交的。

2.6 参数组合使用

下面我们再来回顾一下刚刚的查看历史操作:

$ git log --oneline
097b183 (HEAD -> temp) Add test
d428362 Add style.css
fb9dd79 Add index + logo
695a4fc Add readme
​
$ git log --oneline --all
097b183 (HEAD -> temp) Add test
4fec02f (master) Move readme to readme.md
955e38a Add refering projects
b284333 Add js
d428362 Add style.css
fb9dd79 Add index + logo
695a4fc Add readme
​
$ git log --oneline --all -n4
097b183 (HEAD -> temp) Add test
4fec02f (master) Move readme to readme.md
955e38a Add refering projects
b284333 Add js
​
$ git log --oneline --all -n4 --graph
* 097b183 (HEAD -> temp) Add test
| * 4fec02f (master) Move readme to readme.md
| * 955e38a Add refering projects
| * b284333 Add js
|/
​

可以看到这些命令都可以组合使用,通常建议使用--graph因为直观,这里要注意的是-n4它默认是取所有分支最近的提交,只取4个。

2.7 查看指定分支

下面看下如何查看指定分支的:

$ git log --oneline --all temp
097b183 (HEAD -> temp) Add test
4fec02f (master) Move readme to readme.md
955e38a Add refering projects
b284333 Add js
d428362 Add style.css
fb9dd79 Add index + logo
695a4fc Add readme
​
$ git log --oneline temp
097b183 (HEAD -> temp) Add test
d428362 Add style.css
fb9dd79 Add index + logo
695a4fc Add readme
​

这里要注意的是,如果您指定分支,就不要使用--all--all会比分支优先,从而导致依然是显示的所有支持的提交历史。

2.8 更多参数

当然,git log指令远远不止上面的那些参数,上面的是通用的,如何想看更多,请使用 git help --web log

3. gitk 图形化界面

3.1 启动 gitk

git bash命令行中,输入gitk命令就会弹出图形化的界面:

这个界面还是比较直观的,默认是查看当前分支的所有提交历史。左上角是历史树,中间是commit令牌,以背景色区分某次提交。

3.2 界面功能介绍

3.2.1 提交历史树

随着树节点的选择不同,Patch信息也会变化。还有一个Tree选项:

3.2.2 提交信息查看

左下角的Diff选项会显示几项内容,在之前的git log命令中,没有教如何查看作者和提交人的信息。这里我们介绍下Author与Committer两个概念的区别:

一个典型的场景,master分支里面有一个提交,我很想把它挑出来放到temp分支,其实就是cherry-pick。此时,如果是用他人的提交时,Git 会保留原始作者信息,而将提交者更新为你自己

另外,还有Parent与Child的信息,Branches代表了这个提交与哪些分支有关。

3.3 视图定制

gitk的图形化界面是可以定制的,我们来简单使用一下:

这样就能看到所有分支了:

3.4 右键菜单操作

右键提交树,提供了很多功能:

这里我们以打标签为例演示一个:

点击Create后就创建了一个Tag: