$ 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
(并且不应该显示日期)。
答案 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,则显示 - 日期请求格式的时间戳。
否则,显示索引格式。
所以这很有意义。