为什么--date =影响%gd git日志格式?

时间:2017-09-22 12:21:41

标签: git git-log git-stash

$ git stash list --format="%gd, %cd"
stash@{0}, Fri Sep 22 11:40:25 2017 +0100
stash@{1}, Mon Sep 18 16:12:11 2017 +0100

存储ID和长格式日期。如果我试着缩短日期:

$ git stash list --format="%gd, %cd" --date=short
stash@{2017-09-22}, 2017-09-22
stash@{2017-09-18}, 2017-09-18

为什么隐藏ID也会变成日期? %cd documented尊重--date=,但不尊重%gd(并且不应该显示日期)。

1 个答案:

答案 0 :(得分:2)

  

%gD:reflog选择器,例如,refs / stash @ {1}或refs / stash @ {2分钟   前}; 格式遵循针对-g选项所描述的规则。   @之前的部分是命令行中给出的refname   (所以git log -g refs / heads / master会产生refs / heads / master @ {0})。

     

%gd:缩短了reflog选择器; 与%gD相同,但是refname部分   缩短了人类的可读性(因此refs / heads / master变得公正   主站)。

因此%gd%gD相同,%gD的格式遵循-g的规则。我们来看看-g

  

-g

     

- 步行reflogs

     

不要走到提交系统链,而是将reflog条目从最新的条目转移到旧的条目链条。当这个   使用选项您无法指定要排除的提交(即,   ^ commit,commit1..commit2和commit1 ... commit2表示法不能   使用)。

     

使用--pretty格式而不是oneline(原因很明显),这个   导致输出有两行额外的信息   reflog。输出中的reflog指示符可能显示为   ref @ {Nth}(其中Nth是reflog中的反向时间顺序索引)   或者作为ref @ {timestamp}(带有该条目的时间戳),具体取决于   关于一些规则:

     

如果起始点指定为ref @ {Nth},则显示索引   格式。

     

如果起始点指定为ref @ {now},则显示时间戳   格式。

     

如果两者均未使用,但在命令行中显示了--date,则显示    - 日期请求格式的时间戳。

     

否则,显示索引格式。

所以这很有意义。