NotePublic/Software/Applications/Git/个性化你的_Git_Log_输出格式.md

85 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 个性化你的 Git Log 输出格式
git 已经变成了很多程序员日常工具之一。
git log 是查看 git 历史的好工具,不过默认的格式并不是特别的直观。
很多时候想要更简便的输出更多或者更少的信息,这里列出几个 git log 的 format。
可以根据自己的需要定制。
git log 命令可一接受一个--pretty 选项,来确定输出的格式。
如果我们只想输出 hash
```bash
git log --pretty=format:"%h"
```
git 用各种 placeholder 来决定各种显示内容:
* %H: commit hash
* %h: 缩短的 commit hash
* %T: tree hash
* %t: 缩短的 tree hash
* %P: parent hashes
* %p: 缩短的 parent hashes
* %an: 作者名字
* %aN: mailmap 的作者名字 (.mailmap 对应详情参照git-shortlog(1)或者git-blame(1))
* %ae: 作者邮箱
* %aE: 作者邮箱 (.mailmap 对应详情参照git-shortlog(1)或者git-blame(1))
* %ad: 日期 (--date= 制定的格式)
* %aD: 日期, RFC2822 格式
* %ar: 日期, 相对格式 (1 day ago)
* %at: 日期, UNIX timestamp
* %ai: 日期, ISO 8601 格式
* %cn: 提交者名字
* %cN: 提交者名字 (.mailmap 对应详情参照git-shortlog(1)或者git-blame(1))
* %ce: 提交者 email
* %cE: 提交者 email (.mailmap 对应详情参照git-shortlog(1)或者git-blame(1))
* %cd: 提交日期 (--date= 制定的格式)
* %cD: 提交日期, RFC2822 格式
* %cr: 提交日期, 相对格式 (1 day ago)
* %ct: 提交日期, UNIX timestamp
* %ci: 提交日期, ISO 8601 格式
* %d: ref 名称
* %e: encoding
* %s: commit 信息标题
* %f: sanitized subject line, suitable for a filename
* %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(...): 制定颜色, 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).
除此之外, --graph 选项可以显示 branch 的 ascii 图例。
如果你自己定制了一个喜欢的输出方案,可以保存到 git config或者设置 alias 以便日后使用。~/.gitconfig 中加入:
```bash
[alias]
lg = log --graph
```
或者运行:
```bash
git config --global alias.lg "log --graph"
```
最后来一个别人分享的例子,稍微有些慢,但是可以看下 git log 定制效果,效果很酷。。
```bash
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
```