• 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
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    01 提交限制模式

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

    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');
         }
       };
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    --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(+)
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    --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
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    --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
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    --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
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    --relative-date:使用较短的相对时间显示
    # Date 提交日期以相对时间的格式进行展示
    $ git log --relative-date
    --->> 
    commit e188ceafae (HEAD -> master, origin/master)
    Author: xxx <xxx@yy.com>
    Date:   21 minutes ago
    
         提交信息zzz
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    --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'
    | | |     
    ......
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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)	
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 定制格式:format + 指定格式(下面的表格展示了可用参数)
    # 列出提交对象的简短的hash(即 commitId)、作者名字、修订日期(相对时间)和提交信息,且用波浪号(~)相连
    $ git log --pretty=format:"%h~%an~%ar~%s"
    --->> 
    123450e0~xxx~58 minutes ago~提交信息2...
    234560e0~xxx~6 hours ago~提交信息1...
    <<--- 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    参数说明
    %H提交对象完整的 hash
    %h提交对象简短的 hash
    %T树对象的完整 hash
    %t 树对象的简短 hash
    %P父对象的完整 hash
    %p父对象的简短 hash
    %an作者的名字
    %ae作者的电子邮件地址
    %ad作者修订日期(可以用 -date= 选项定制格式)
    %ar作者修订日期(相对时间)
    %cn提交人的名字
    %ce提交人的电子邮件地址
    %cd提交日期
    %cr提交日期(相对时间)
    %s提交说明
  • 相关阅读:
    人体解析(Human Parse)开源数据集整理
    Unity_Demo | 中世纪风3D-RPG游戏
    嵌入式学习板开发:STC单片机扑克游戏设计(C语言)
    唯一邀请码生成策略
    神经网络阈值是什么意思,神经网络阈值如何确定
    【无标题】
    GO语言框架中如何快速集成日志模块
    mavn打包时如何把外部依赖加进去?
    Web3 的 10 大应用
    使用GPT2-Chinese进行中文预测生成文章
  • 原文地址:https://blog.csdn.net/Yuki_yuhan/article/details/124989018