4

我有一个像这样的 git log 别名

log --graph --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %ci %an - %s''

生产

* 123456 2013-03-01 09:45:11 +0100 Name Surname - commit message 1
* 123457 2013-03-01 09:45:11 +0100 Name LongerSurname - commit message 2
* 123458 2013-03-01 09:45:11 +0100 Name Sho - commit message 3

我想获得不同的格式,即

* 123456 2013-03-01 09:45:11 Name Surname - commit message 1
* 123457 2013-03-01 09:45:11 Name LongerS - commit message 2
* 123458 2013-03-01 09:45:11 Name Sho     - commit message 3

请注意 iso8601 缺少 GMT+1 规范,以及如何缩短名称和填充短名称以保持日志消息对齐。

可以用普通的 git log 做到这一点吗?如果没有,实现它的最佳方法是什么?

4

1 回答 1

4

您可以使用 ANSI 转义码来移动光标。您还必须调整寻呼机设置。

export LESS+=' -r'  # Make sure your pager will accept ANSI escape codes
git log --graph \
  --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %ci %x1b[s%an%x1b[u%x1b[3C - %s'

使用的转义码如下:

  1. %x1b[s - 保存当前光标位置
  2. %x1b[u - 恢复光标位置,即将光标移动到使用 %x1b[s 时的位置
  3. %x1b[3C - 将光标向前移动 3 个位置(您可以更改数字以匹配您要显示的字符数。

使用这些转义字符重新定位光标后,以下文本将覆盖作者姓名的尾随部分,从而产生您想要的效果。

至于日期,请查看评论中的链接:如何更改 git log 日期格式

于 2013-03-04T16:34:57.613 回答