使用类似git log --abbrev-commit --pretty=format:'%h %<(72,trunc)%s %d'
,您可以获得带有图形的相当对齐的 git commit 消息。如果您删除该--graph
选项,它将完全对齐。这是命令的大致样子
* 40f1481 Commit title message (HEAD, dev)
|\
| * 9b5122d Commit title message (debug)
| * fe7ddfe Commit title message
| * 8e4d414 Commit title message
| * 53affdd Commit title message
| * a45fbaf Commit title message
|/
* 36b23c3 Commit title message
* 5b7bfe1 Commit title message (master)
Run Code Online (Sandbox Code Playgroud)
问题在于图形符号的对齐方式混乱,正如您在前两次提交中看到的那样。这是理想情况下的样子
* 40f1481 Commit title message (HEAD, dev)
|\
| * 9b5122d Commit title message (debug)
| * fe7ddfe Commit title message
| * 8e4d414 Commit title message
| * 53affdd Commit title message
| * a45fbaf Commit title message
|/
* 36b23c3 Commit title message
* 5b7bfe1 Commit title message (master)
Run Code Online (Sandbox Code Playgroud)
我的问题是在使用绘图选项时是否有获得正确对齐的选项?或者获取图形的宽度以便您可以相应地填充日志?
我知道一个快速的 hack 是通过 tab (%x09) 填充第一个选项,它应该适用于大多数项目,但我想知道它们是否是一个美观的、万无一失的选项,可以通过最少的填充来实现但也适用于 5 不够的情况。这是选项卡解决方案失败的示例
使用列记录,没有彩色图表。
圆满成功!稍后会尝试更新。
小智 8
现代版本的 Git(我在 cygwin 环境中有 git 2.17.0)可以很好地处理彩色图形和缩进,无需任何额外的工具或脚本。
我的.gitconfig
别名部分:
[alias]
l = log --graph --abbrev-commit --decorate=no --date=format:'%Y-%m-%d %H:%I:%S' --format=format:'%C(03)%>|(26)%h%C(reset) %C(04)%ad%C(reset) %C(green)%<(16,trunc)%an%C(reset) %C(bold 1)%d%C(reset) %C(bold 0)%>|(1)%s%C(reset)' --all
Run Code Online (Sandbox Code Playgroud)
我已经在 django 官方存储库上对其进行了测试,效果很好。
我见过的最接近的git log
正确对齐是在garybernhardt/dotfiles/.githelpers
.
加里使用:
我在repo git 的克隆中进行了测试:
vonc@VONCAVN7:~/gits/src/git$
git -c color.ui=auto log --graph --pretty=tformat:"%C(yellow)%h%Creset}%Cgreen(%ar)%Creset}%C(bold blue)<%an>%Creset}%C(bold red)%d%Creset %s" -100| column -s '}' -t
Run Code Online (Sandbox Code Playgroud)
在多行中:
git -c color.ui=auto log --graph \
--pretty=tformat:"%C(yellow)%h%Creset}%Cgreen(%ar)%Creset}%C(bold blue)<%an>%Creset}%C(bold red)%d%Creset %s" \
-100| column -s '}' -t
Run Code Online (Sandbox Code Playgroud)
但是:它仅适用于 color.ui 设置为 false 或 auto 的情况,而不是设置为始终:颜色会弄乱列对齐。
没有颜色:
* 238e487ea (3 weeks ago) <Junio C Hamano> (HEAD -> master, tag: v2.14.1-b5, origin/master, origin/HEAD) The fifth batch post 2.14
* 6e6ba65a7 (3 weeks ago) <Junio C Hamano> Merge branch 'mg/killed-merge'
|\
| * 9d89b3552 (3 weeks ago) <Michael J Gruber> merge: save merge state earlier
| * 8e6a6bb36 (3 weeks ago) <Michael J Gruber> merge: split write_merge_state in two
| * 62dc42b93 (3 weeks ago) <Michael J Gruber> merge: clarify call chain
| * e2de82f27 (4 weeks ago) <Michael J Gruber> Documentation/git-merge: explain --continue
* | eabdcd4ab (3 weeks ago) <Junio C Hamano> Merge branch 'jt/packmigrate'
|\ \
| * | 7709f468f (4 weeks ago) <Jonathan Tan> pack: move for_each_packed_object()
| * | f9a8672a8 (4 weeks ago) <Jonathan Tan> pack: move has_pack_index()
...
...
...
| * | | | | | | | fdbdb64f4 (5 weeks ago) <Jeff King> interpret-trailers: add an option to show only existing trailers
| * | | | | | | | 56c493ed1 (5 weeks ago) <Jeff King> interpret-trailers: add an option to show only the trailers
| * | | | | | | | 8abc89800 (5 weeks ago) <Jeff King> trailer: put process_trailers() options into a struct
* | | | | | | | | bfd91b413 (3 weeks ago) <Junio C Hamano> Merge branch 'pb/trailers-from-command-line'
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | c88bf5436 (7 weeks ago) <Paolo Bonzini> interpret-trailers: fix documentation typo
| * | | | | | | | | 0ea5292e6 (7 weeks ago) <Paolo Bonzini> interpret-trailers: add options for actions
Run Code Online (Sandbox Code Playgroud)
前 100 次提交完全一致。
用颜色...
在将 git 日志输出通过管道输送到列之前,您需要对 git 日志输出进行额外的预处理。
请参阅“漂亮打印列中的颜色转义代码”。