git-log

来自百合仙子's Wiki
跳转到导航 跳转到搜索

查看提交日志。可在命令行最后给出路径,以只查看指定路径的提交信息。

筛选

-数字
仅显示最近的若干次提交(支持多位数)
--since/after, --until/before
git log --since=2.weeks2008-01-152 years 1 day 3 minutes ago
--author, --author
指定作者/提交者
--grep
搜索提交注释中的文本
-S
搜索提交中的文本,可用于在整个历史中搜索特定字符串

重命名

-M
检测重命名
--follow
在列出某个路径的历史时跟踪重命名

详细程度

-p
在日志中查看文件的更改
--stat
显示简要的增改行数统计
--pretty
oneline
format 指定格式,见下
--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

参见Aliases - Git SCM Wiki

显示提交历史的版本

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 输出控制字符,即使关掉色彩也不行。

参见