04- git log命令介绍

119 阅读5分钟

1. 控制显示的参数

  • 默认日志输出
    git log
    
  • 显示每次commit的文件内容差异
    git log -p
    
  • 显示每个修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计
    git log --stat
    
  • 只显示--stat中最后的行数添加修改删除统计
    git log --shortstat
    
  • 仅在已修改的提交信息后显示文件清单
    git log --name-only
    
  • 显示新增、修改和删除的文件清单
    git log --name-status
    
  • 仅显示SHA-1的前几个字符,而非所有的40个字符
    git log --abbrev-commit
    
  • 使用较短的相对时间显示(例如:"two weeks ago")
    --relative-date
    
  • 显示ASCII图形表示的分支合并历史
    --graph
    
  • 使用其他格式显示历史提交信息 可选项有:oneline,short,medium,full,fuller,email,raw以及format:,默认为medium
    # 如:一行显示,只显示哈希值和提交说明
    --pretty=oneline
    # 还可以控制显示的记录格式:%h-提交对象的简短哈希字串,%Cred-字体颜色为红色
    --pretty=format:'%Cred%h'
    
  • 自定义日期显示格式: 2022-01-13 11:32:13
    git log --date=format:'%Y-%m-%d %H:%M:%S'
    

2. 筛选条件

  • 显示前n条log

    # 显示前10条log
    git log -10
    
  • 按时间筛选

    # 显示2020年01月01号及之后的commit
    git log --after="2020-01-01"
    
    # 显示2020年01月01号之前的commit
    git log --before="2020-01-01"
    
  • 显示某开发者的提交记录

    git log --author="开发者"
    
  • 根据commit描述,查找对应的提交记录

    git log --grep="Initial commit"
    #可以传入-i用来忽略大小写
    #如果想同时使用--grep和--author,必须在附加一个--all-match参数
    
  • 查看某个文件相关的提交记录

    git log -- test.txt test1.txt
    
  • 所有以.md结尾的文件的提交历史

    git log  *.md
    
  • 查看某个目录下所有文件提交记录

    # 查看file目录下所有文件提交记录
    git log -- file/
    
  • 查看某分支的提交记录

    # 查看dev分支的提交记录
    git log dev --
    
  • 查看某段内容的提交记录

    # 查看“Hello World!”这段内容的提交记录
    git log -S'Hello World!'
    
    # 如果想使用正则表达式去匹配而不是字符串,可以使用-G代替-S
    git log -G'*Hello'
    
  • 在feature有而在master没有的所有commit

    git log master..feature
    
  • 查看merge提交记录

    # 过滤掉merge commit
    git log --no-merges
    # 查看merger
    git log --merges
    
  • 查看标签记录

    # 查看 v1.0标签记录
    git log v1.0
    # 查看v1.0标签之后的提交记录
    git log v1.0..
    
  • 根据commit id,查看提交记录

    # 查看commit a08ab之前的记录
    git log a08ab
    
    # 查看ao8ab和da80d之间的记录
    git log ao8ab da80d
    

3. log显示格式-format使用

上面已经介绍了,--pretty=format可以设置日志输出格式,如下:

# 控制显示的记录格式:%h-提交对象的简短哈希字串,%Cred-字体颜色为红色
--pretty=format:'%Cred%h'

3.1 日志显示格式

其它记录格式有:

  • %H 提交对象(commit)的完整哈希字串
  • %h 提交对象的简短哈希字串
  • %T 树对象(tree)的完整哈希字串
  • %t 树对象的简短哈希字串
  • %P 父对象(parent)的完整哈希字串
  • %p 父对象的简短哈希字串
  • %an 作者(author)的名字
  • %ae 作者的电子邮件地址
  • %ad 作者修订日期(可以用 -date= 选项定制格式)
  • %ar 作者修订日期,按多久以前的方式显示
  • %cn 提交者(committer)的名字
  • %ce 提交者的电子邮件地址
  • %cd 提交日期(可以用 -date= 选项定制格式)
  • %cr 提交日期,按多久以前的方式显示
  • %s 提交说明

3.2 颜色格式

颜色以%C开头,后边接几种颜色,还可以设置字体,如果要设置字体的话,要一块加个括号。 能设置的颜色值包括:

  • reset(默认的灰色),
  • normal,
  • black,
  • red,
  • green,
  • yellow,
  • blue,
  • magenta,
  • cyan,
  • white.

字体属性则有:

  • bold,
  • dim,
  • ul,
  • blink,
  • reverse.

3.3 自定义日志显示效果

  1. 首先,通过--pretty=format:定义日志格式、字体颜色,如下

    --pretty=format:'%Cred%h%Creset -%C(yellow)%d%C(bold reset) %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'
    
  2. 自定义时间格式

    # 定义时间格式
    --date=format:'%Y-%m-%d %H:%M:%S'
    
  3. 再加上其它参数,如:

    # 仅显示commitId的前几个字符
    --abbrev-commit
    # 显示ASCII图形表示的分支合并历史
    --graph
    # 显示每个修改过的文件
    --stat
    
  4. 将上述定义日志格式的命令进行拼接,完整命令如下:

    git log --graph --stat --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%C(bold reset) %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit
    

    当然,根据需要,也可以再拼接或者去除某些参数。同时,为了方便使用,可以将上述的完整命令配置为alias:

    # 为自定义的git日志输出格式配置alias
    git config --global alias.lg "log --graph --stat --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%C(bold reset) %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"
    
    # 然后,使用git lg命令就可以输出自定义的日志格式了
    

参考文章:
git log命令全解析

git系列文章

01-git常用命令汇总

02-git config介绍

03-git工作区、暂存区、版本库介绍

04-git log命令介绍

05-git关联远程仓库

06-git分支管理策略

07-git合并冲突

07-git合并冲突场景

08-git配置多个ssh密钥