git-log
跳转到导航
跳转到搜索
查看提交日志。可在命令行最后给出路径,以只查看指定路径的提交信息。
筛选
-数字- 仅显示最近的若干次提交(支持多位数)
--since/after, --until/before- 如
git log --since=2.weeks、2008-01-15、2 years 1 day 3 minutes ago --author, --author- 指定作者/提交者
--grep- 搜索提交注释中的文本
-S- 搜索提交中的文本,可用于在整个历史中搜索特定字符串
重命名
-M- 检测重命名
--follow- 在列出某个路径的历史时跟踪重命名
详细程度
-p- 在日志中查看文件的更改
--stat- 显示简要的增改行数统计
--pretty-
onelineformat指定格式,见下
--graph- 显示每个提交所在的分支及其合并情况
pretty=format 中的格式占位符表
这里列出了常用的格式占位符写法及其代表的意义。
选项 说明 %H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 作者(author)的名字 %ae 作者的电子邮件地址 %ad 作者修订日期(可以用 --date= 选项定制格式) %ar 作者修订日期,按多久以前的方式显示 %cn 提交者(committer)的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期,按多久以前的方式显示 %s 提交说明
可视化
GraphViz
使用GraphViz显示提交历史。定义如下别名
graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/\\\"&\\\"/g' ; echo '}'; }; f"
这样使用
git graphviz | dotty /dev/stdin
显示提交历史的版本
graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/Git&/g'; git log --pretty='format: Git%h[label=\"%s\",shape=box];' ; echo '}'; }; f"
git graphviz | dot -Nfontname="Adobe Song Std" -Tpng /dev/stdin -o git.png
注意事项
当标准输出为终端时,似乎没有办法阻止 git-log 输出控制字符,即使关掉色彩也不行。