首页 > 解决方案 > 如何修复 git log --graph 中的对齐问题

问题描述

如果没有可用的 GUI,我将使用以下别名在控制台上呈现我的 git 提交历史记录:

$ git config alias.treex
log --color --graph --pretty=format:'%C(cyan)%h%Creset - %C(cyan)%ad%Creset %<(80,trunc)%s   %C(cyan)%>(20,trunc)%an - %Cgreen%>(12)%cr%Creset' --date=format:'%d.%m.%Y %H:%M' --abbrev-commit --all

虽然格式字符串使用 align 和固定大小的字符串格式,例如%<(80,trunc)%s,但呈现的图形git log --graph破坏了对齐方式:

Git treex 结果。
(点击放大)

如何修复图表本身导致的对齐损坏?

标签: gitpretty-printtext-alignment

解决方案


而不是%<(80,trunc)%s告诉git log在 80 个字符上呈现主题,您可以使用%<|(110,trunc)%s它告诉它呈现主题,直到它到达输出的110第 th列。这样,主题之后的下一个字段从第111st列开始并恢复顺序。
110大约是80您想要的主题的原始字符 + 之前列的大小(%h=7字符,%ad=16字符)以及您在它们之间放置的分隔符。)

当然,您可以使用不同的值。您还可以尝试限制第一个字段 ( %h) 的宽度以使所有其他字段对齐,但它不会在包含大量分支的历史记录部分上正确对齐;该%s字段很大并且使用足够的列来容纳两个几十个并发分支。

该格式在格式右侧的文档中git log<()进行了描述,并且它存在于文档页面的所有版本中(不幸的是以 开头2.3.8)。如果您使用的是较旧的 Git 版本,则该格式可能对您不可用。在这种情况下,最好的建议是将您的 Git 更新到更新的版本。


推荐阅读