Git交互式变基中instructionFormat左侧填充空格无效问题求助
Git Rebase指令格式左对齐填充失效问题解决
问题情况
- 在
.gitconfig中配置rebase指令格式,试图给用户名左侧填充空格实现左对齐:
但该配置没有任何填充效果;[rebase] instructionFormat = %>(10)%al %as %s - 若在
%左侧添加任意字符(比如x%>(10)%al),填充功能正常生效; - 右对齐格式
%<(10)在.gitconfig中可正常工作; - 相同格式在命令行执行
git log -n 10 --pretty="%>(10)%al %as %s"时,左对齐填充完全正常。
原因分析
Git对.gitconfig中rebase.instructionFormat的格式串解析逻辑,和命令行中git log的--pretty格式解析逻辑存在差异,对于开头直接使用%>(...)的左对齐填充指令,rebase配置的解析器无法正确识别,导致填充失效。
解决办法
可以通过在格式串开头添加零宽度字符的方式绕过解析问题,既不影响最终显示效果,又能让Git正确识别左对齐填充指令:
[rebase] instructionFormat = %200B%>(10)%al %as %s
(注:%200B是Git支持的Unicode零宽度空格转义,不会在最终输出中显示任何字符)
也可以用另一种方式:先添加一个空格,再通过左填充指令将总宽度设为10(该方式在用户名长度超过10时会失效,建议优先用零宽度字符方案):
[rebase] instructionFormat = %>(10) %al %as %s
内容的提问来源于stack exchange,提问作者Shuman
相关产品推荐
相关产品推荐

