更好地控制git日志格式

时间:2013-03-04 15:15:51

标签: git

我有一个像这样的git日志别名

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日志执行此操作?如果没有,实现它的最佳方法是什么?

1 个答案:

答案 0 :(得分: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个位置(您可以更改数字以匹配您要显示的字符数。
  4. 使用这些转义字符重新定位光标后,以下文本将覆盖作者姓名的尾部,从而产生您想要的效果。

    关于日期,请查看评论中的链接:How to change git log date formats