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
- 按时间筛选
//显示2022年01月01号及之后的commit
git log --after="2022-01-01"
//显示2022年01月01号之前的commit
git log --before="2022-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. 自定义日志显示效果
- 首先,通过--pretty=format:定义日志格式、字体颜色,如下
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%C(bold reset) %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'
- 自定义时间格式
//定义时间格式
--date=format:'%Y-%m-%d %H:%M:%S'
- 再加上其它参数,如:
//仅显示commitId的前几个字符
--abbrev-commit
//显示ASCII图形表示的分支合并历史
--graph
//显示每个修改过的文件
--stat
- 将上述定义日志格式的命令进行拼接,完整命令如下:
$ 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命令就可以输出自定义的日志格式了
网友评论