85 lines
2.7 KiB
Markdown
85 lines
2.7 KiB
Markdown
|
# 个性化你的 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
|
|||
|
```
|