如果没有可用的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
虽然格式字符串使用对齐和固定大小的字符串格式,如%<(80,trunc)%s
,但git log --graph
呈现的图形会破坏对齐:
如何通过图形本身修复损坏的对齐原因?
而不是%<(80,trunc)%s
告诉git log
渲染80个字符的主题,你可以使用%<|(110,trunc)%s
告诉它渲染主题,直到它到达输出的110
th列。这样,主题在111
st列开始后的下一个字段,并恢复顺序。
(110
大约是你想要主题的原始80
字符+它之前的列的大小(%h
= 7
字符,%ad
= 16
字符)和你放在它们之间的分隔符。)
当然,您可以使用不同的值。您还可以尝试约束第一个字段(%h
)的宽度以使所有其他字段对齐,但它不会在包含大量分支的历史记录部分上正确对齐; %s
字段很大,使用足够的列来容纳两十个并发分支。
该格式在documentation of git log
格式下的<()
中描述,它存在于文档页面的所有版本中(不幸的是以2.3.8
开头)。如果您使用的是较旧的Git版本,则可能无法使用该格式。在这种情况下,最好的建议是将您的Git更新为更新版本。
%h
placeholder for alignment正如axiac之前提到的那样,你可以约束第一个字段的宽度。例如,如果将%>|(16)
添加到格式化定义的开头,则可以将缩写的提交哈希(%h
)移至至少在第16列完成。如果你减去%h
的7位数字和一个额外的空格字符,你将给图表一个8位数的范围。
正如axiac也提到的,这个解决方案将面临一个问题。一旦您的图形超过了8个字符的长度,由于项目包含许多并行分支,您的日志条目将更加移动。您必须根据当前的Git项目情况调整别名。幸运的是有一个trick for powerful Git aliases。使用此技巧,您可以将参数传递给设置移位列数的别名。
使用参数qazxsw poi调用别名,然后将您的Git日志历史记录条目移动22列:qazxsw poi
现在,您可能无意在每次调用别名时传递列数。这个30
解释了如何设置默认参数。这样,您的别名引用了一个没有参数的默认值。一旦我们在它,我们可以直接在别名内纠正8位数的偏差。因此,传递的参数直接对应于实际移位的列。
你的最终Git别名接受一个参数,用Qazxswpoi列移动Git日志条目,默认移位为8位: