本文内容:
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: