Git 笔记 - git log

git log 命令用于按从近到远的顺序显示提交日志,内容包括 commit id、作者、提交时间和提交信息等。

# 列出当前分支的版本历史
$ git log
--->> 
commit ab97576b6a7c74c5c6d4a88beb1c5a95fb008222 (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 8 15:51:51 2022 +0800

     提交信息zzz
     
commit 843de4dea3bc9efc4d0d4ef0d216a2b9feda5e74 (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Tue Jun 7 13:09:59 2022 +0000

     提交信息zzz
<<--- 

01 提交限制模式

-<number>:显示最近 number 条提交记录
# 列出最近 2 条提交
$ git log -2
--follow [文件路径]:显示某个文件的版本历史,包括文件改名
# 列出 src/pages/test 文件
$ git log --follow src/pages/test
--until=<date>, --before=<date>:显示指定时间之前的提交
# 列出 2022年6月1日 之前的提交
$ git log --until=2022-6-1
$ git log --before=2022-6-1
--since=<date>, --after=<date>:显示指定时间之后的提交
# 列出 2022年6月1日 之后的提交
$ git log --since=2022-6-1
$ git log --after=2022-6-1
--author=<pattern>:显示指定作者相关的提交
# 列出作者为 xiaoming 的提交
$ git log --author=xiaoming
--committer=<pattern>:显示指定提交者相关的提交
# 列出提交者为 xiaoming 的提交
$ git log --committer=xiaoming

02 信息简化模式

-p:按补丁格式显示每个更新之间的差异
# 列出当前分支每个提交的差异
$ git log -p fa83118721af5cd1698a644f63c3c951a6361efc
--->> 
commit fa81238721af5cd1698a644f63c3c951a6361efc (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Tue Jun 7 13:09:59 2022 +0000

     提交信息zzz
     
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 26a5ebd3d0..dab1caebda 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -31,6 +31,7 @@ const DetailModal: FC<DetailModalProps> = (props) =>
     );
     if (!loading) {
       setColor('blue')
+      setWord('okay');
     }
   };
<<--- 
--stat:显示每次更新的文件修改统计信息
--shortstat:只显示 --stat 中最后的行数修改添加移除统计
$ git log --stat
--->> 
commit 28e05ebba5484b579b2c21ffcb6c57d38f0c877c (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 8 15:51:51 2022 +0800

     提交信息zzz

 src/pages/one.jsx  | 3 +++
 src/pages/two.jsx | 4 ++++
 2 files changed, 7 insertions(+)
<<--- 

$ git log --shortstat
--->> 
commit 28e05ebba5484b579b2c21ffcb6c57d38f0c877c (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 8 15:51:51 2022 +0800

     提交信息zzz

 2 files changed, 7 insertions(+)
<<--- 
--name-only:仅在提交信息后显示已修改的文件清单
$ git log --name-only
--->> 
commit 28e05ebba5484b579b2c21ffcb6c57d38f0c877c (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 8 15:51:51 2022 +0800

     提交信息zzz

 src/pages/one.jsx
 src/pages/two.jsx
<<--- 
--name-status:显示新增、修改、删除的文件清单
# 列出
$ git log -name-status
--->> 
commit 28e05ebba5484b579b2c21ffcb6c57d38f0c877c (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 8 15:51:51 2022 +0800

     提交信息zzz

M       src/pages/first.tsx
A       src/pages/second.tsx
D       src/pages/third.tsx
R       src/pages/fourth.tsx
<<--- 
--abbrev-commit:仅显示 SHA-1(commit id) 的前几个字符,而非所有的 40 个字符

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

# commit id 只展示前 10 个字符
$ git log --abbrev-commit
--->> 
commit e188ceafae (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   Wed Jun 15 16:35:16 2022 +0800

     提交信息zzz
<<--- 
--relative-date:使用较短的相对时间显示
# Date 提交日期以相对时间的格式进行展示
$ git log --relative-date
--->> 
commit e188ceafae (HEAD -> master, origin/master)
Author: xxx <xxx@yy.com>
Date:   21 minutes ago

     提交信息zzz
<<--- 
--graph:显示 ASCII 图形表示的分支合并历史
$ git log --graph
--->> 
* commit e188ceafae851f7a08e1967bf7e9c0579a11c8b1 (HEAD -> master, origin/master)
| Author: xxx <xxx@yy.com>
| Date:   Wed Jun 15 16:35:16 2022 +0800
| 
|     提交信息zzz
|   
*   commit 80c65c598cc12342191a94ed68cb59dc3feb6b06 (origin/test, test)
|\  Merge: cbe9564e16 54037d4d12
| | Author: xxx <xxx@yy.com>
| | Date:   Tue Jun 14 12:39:15 2022 +0000
| | 
| |     Merge branch 'one-test' into 'test'
| |   
| *   commit 54037d4d12344671fe8bddc9d91b3af95b014799 (origin/one-test)
| |\  Merge: 9761a714c6 5210d0e8d4
| | | Author: xxx <xxx@yy.com>
| | | Date:   Mon Jun 13 14:03:42 2022 +0000
| | | 
| | |     Merge branch 'two-test' into 'one-test'
| | |     
......
<<--- 

03 定制模式

--pretty:使用其他格式显示历史提交信息。
  • 简单格式:可用选项 onelineshortmediumfullfullerreference
# 1. oneline 最简单的信息
$ git log --pretty=oneline
--->> 
	<完整hash (commit id) > ...提交信息...
<<--- 

# 2. short 较少的信息
$ git log --pretty=short
--->> 
commit <hash>
Author: <作者>
	...提交信息...
<<--- 

# 3. medium
$ git log --pretty=medium
--->> 
commit <hash>
Author: <作者>
Date:   <修订日期>
	...提交信息...
<<--- 

# 4. full
$ git log --pretty=full
--->> 
commit <hash>
Author: <作者>
Commit: <提交人>
	...提交信息...
<<--- 


# 5. fuller
$ git log --pretty=fuller
--->> 
commit <hash>
Author: <作者>
AuthorDate: <修订时间>
Commit:<提交人>
CommitDate: <提交日期>
	...提交信息...
	
<<--- 

# 6. reference
$ git log --pretty=reference
--->> 
<缩写hash> (提交信息, YYYY-MM-DD)	
<<--- 
  • 定制格式:format + 指定格式(下面的表格展示了可用参数)
# 列出提交对象的简短的hash(即 commitId)、作者名字、修订日期(相对时间)和提交信息,且用波浪号(~)相连
$ git log --pretty=format:"%h~%an~%ar~%s"
--->> 
123450e0~xxx~58 minutes ago~提交信息2...
234560e0~xxx~6 hours ago~提交信息1...
<<--- 

🔎 常用格式的占位符如下:

参数说明
%H提交对象完整的 hash
%h提交对象简短的 hash
%T树对象的完整 hash
%t 树对象的简短 hash
%P父对象的完整 hash
%p父对象的简短 hash
%an作者的名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 -date= 选项定制格式)
%ar作者修订日期(相对时间)
%cn提交人的名字
%ce提交人的电子邮件地址
%cd提交日期
%cr提交日期(相对时间)
%s提交说明
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值