我想调整 的默认输出git reflog,但我首先需要格式字符串来重现默认输出。具体来说,我在为不同的引用名称着色时遇到了问题:
有更懂 Git 的人可以帮我吗?
\n\n\n
git reflog show是一个别名git log -g --abbrev-commit --pretty=oneline
然后应该将您发送到文档,该git log文档很少提及--pretty=oneline,但在-g又名--walk-reflogs描述下隐藏了一个重要的部分:
\n\n使用
\n--pretty除此之外的格式oneline(出于明显的原因),这会导致输出具有从引用日志中获取的两行额外信息。输出中的引用日志指示符可能显示为ref@{Nth}(其中Nth是引用日志中的逆时间索引)或ref@{timestamp}(带有该条目的时间戳),具体取决于一些规则:\n
\n- \n
如果起始点指定为
\nref@{Nth},则显示索引格式。- \n
如果起点指定为
\nref@{now},则显示时间戳格式。- \n
如果两者都没有使用,而是
\n--date在命令行上给出,则以 所要求的格式显示时间戳--date。- \n
否则,显示索引格式。
\n在 下
\n--pretty=oneline,提交消息在同一行上以该信息为前缀。该选项不能与 结合使用--reverse。另请参阅git-reflog(1)。
这暗指的“起点”是您使用命令给出的引用日志条目git log -g。如果您没有给出,则git log默认为HEAD,它没有任何一种格式,因此这属于规则 3 或 4:
git log --pretty=oneline -g HEAD@{now}\nRun Code Online (Sandbox Code Playgroud)\n明确使用规则 2,但是:
\ngit log --pretty=oneline -g HEAD@{0}\nRun Code Online (Sandbox Code Playgroud)\n例如,明确使用规则 1。
\n它所说或没有说的一点是,--pretty=oneline它大致相当于%H %gd %s或%h %gd %s取决于您是否使用--abbrev-commit. 但是\xe2\x80\x94这在文档中也有些缺失\xe2\x80\x94如果你log.decorate=auto在配置中设置并且stdout将连接到交互式设备,1你也会被%d插入。
1 “交互式设备”是由 C 库函数指定为“tty”的任何设备isatty。