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 自定义日志显示效果
-
首先,通过--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命令就可以输出自定义的日志格式了
参考文章:
git log命令全解析