Git多颜色输出
git默认的输出是单一颜色的,不仅不够美观,也不容易阅读。实际上,git本身就支持用多种颜色来显示其输出的信息,只需在命令行中运行以下命令来修改git的设置,即可开启多颜色输出:
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
自定义log格式
完成上述步骤后,git log命令的输出虽然有了点颜色,但还是显得枯燥(见下图)。

git提供了自定义log格式的功能,尝试输入以下命令:
git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
把上面命令设置一个别名lg:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
设置之后git lg即可查看log,而且显示的更加友好:

如果要查看更详细的log,即:git lg/log -p
Git log 输出格式化:
| 参数 | 说明 |
|---|---|
| %H | commit hash |
| %h | commit short hash |
| %T | tree hash |
| %t | tree short hash |
| %P | parent hash |
| %p | parent short hash |
| %an | 作者名字 |
| %aN | .mailmap 中对应的作者名字 |
| %ae | 作者邮箱 |
| %aE | .mailmap 中对应的作者邮箱 |
| %ad | –date=制定的日期格式 |
| %aD | RFC2822 日期格式 |
| %ar | 日期格式,例如:1 day ago |
| %at | UNIX timestamp 日期格式 |
| %ai | ISO 8601 日期格式 |
| %cn | 提交者名字 |
| %cN | .mailmap 对应的提交的名字 |
| %ce | 提交者邮箱 |
| %cE | .mailmap 对应的提交者的邮箱 |
| %cd | –data=制定的提交日期的格式 |
| %cD | RFC2822 提交日期的格式 |
| %cr | 提交日期的格式,例如:1day ago |
| %ct | UNIX timestamp 提交日期的格式 |
| %ci | ISO 8601 提交日期的格式 |
| %d | ref 名称 |
| %e | encoding |
| %s | commit 信息标题 |
| %f | 过滤commit信息的标题使之可以作为文件名 |
| %b | commit 信息内容 |
| %N | commit notes |
| %gD | reflog selector, e.g., refs/stash@{1} |
| %gd | shortened reflog selector, e.g., stash@{1} |
| %gs | reflog subject |
| %Cred | 切换至红色 |
| %Cgreen | 切换至绿色 |
| %Cblue | 切换至蓝色 |
| %Creset | 重设颜色 |
| %C(color) | 制定颜色,as described in color.branch.* config option |
| %m | left right or boundary mark |
| %n | 换行 |
| %% | a raw % |
| %x00 | print a byte from a hex code |
| %w([[,[,]]]) | switch line wrapping, like the -w option of git-shortlog(1). |
Git log 命令支持的选项
-p 按补丁格式显示每个更新之间的差异。
–stat 显示每次更新的文件修改统计信息。
–shortstat 只显示 –stat 中最后的行数修改添加移除统计。
–name-only 仅在提交信息后显示已修改的文件清单。
–name-status 显示新增、修改、删除的文件清单。
–abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
–relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
–graph 显示 ASCII 图形表示的分支合并历史。
–pretty 使用其他格式显示历史提交信息。可用的选项包括oneline,short,full,fuller 和 format(后跟指定格式)。
