截断提交信息

10

我知道可以使用类似以下命令来在Git提交日志的漂亮打印中截断消息:

git log --oneline --format="%h %<(70,trunc)%s %cn"

但是这样似乎会在长度小于70个字符的提交消息中填充空格(所以%cn总是会被推到右边)。

如果提交消息少于70个字符,有什么方法可以阻止填充空格呢?


你好。 你想要实现什么目标?你是想阻止提交信息超过70个字符的选项,还是只想查看前70个字符? - CodeWizard
只查看前70个字符 - zoran119
1个回答

7
根据git-log手册ltruncmtrunctrunc只是%<(<N>)占位符的可选参数,其主要目的是进行填充:

%<(<N>[,trunc|ltrunc|mtrunc])使下一个占位符至少占用N列,如果必要则在右侧填充空格。 可以选择从开头(ltrunc)、中间(mtrunc)或结尾(trunc)截断输出,如果输出超过N列。请注意,仅当N >= 2时,截断才能正常工作。

git log的漂亮格式目前似乎没有仅进行截断的选项。我认为这有点与“漂亮打印”通常用于将输出制表化以便人类易读的想法相一致。
你可以通过一些后处理方式,例如使用sed将两个或更多相邻的空格替换为一个,从git log漂亮的打印输出中去除额外的空格。
git log --oneline --format="%h %<(70,trunc)%s %cn" | sed -e "s/[ ]\{2,\}/ /g"

在这种情况下,sed将无法工作,因为如果提交消息小于70,则会在其后添加空格,然后是作者姓名,因此将存在带有填充空格的消息,然后是作者姓名,因此sed将无法删除中间的空格。 - CodeWizard
@jsexpert 这个确切的命令在我的 OS X 和 Cygwin 上都按照描述的方式运行。可能需要根据不同的 sed 版本进行调整。 - famousgarkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接