什么是`git reflog`默认输出的格式字符串?

时间:2017-08-18 21:34:35

标签: git

我想调整git reflog的默认输出,但我首先需要格式字符串来重现默认输出。具体来说,我在使用不同的重新命名的颜色时遇到了麻烦:

git-reflog

Git能让更多人了解我吗?

2 个答案:

答案 0 :(得分:2)

the git reflog documentation

  

git reflog showgit log -g --abbrev-commit --pretty=oneline

的别名

然后应该将您转到the git log documentation,该--pretty=oneline几乎没有提及-g,但在--walk-reflogs又名--pretty描述中隐藏了一个重要位:

  

oneline以外的ref@{Nth}格式(由于显而易见的原因),这会导致输出从reflog中获取两行额外的信息。输出中的reflog指示符可能显示为Nth(其中ref@{timestamp}是reflog中的反向时间顺序索引)或ref@{Nth}(具有该条目的时间戳),具体取决于一些规则:

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

  2.   
  3. 如果起点指定为--date,请显示时间戳格式。

  4.   
  5. 如果两者均未使用,但在命令行中提供了--date,则以--pretty=oneline请求的格式显示时间戳。

  6.   
  7. 否则,请显示索引格式。

  8.         

    --reverse下,提交消息在同一行上以此信息为前缀。此选项无法与git log -g结合使用。另请参阅git-reflog(1)

"起点"这暗示了您使用git log命令提供的 reflog条目。如果您没有提供,则HEAD默认为git log --pretty=oneline -g HEAD@{now} ,其中没有格式,因此属于规则3或4:

git log --pretty=oneline -g HEAD@{0}

明确使用规则2,但是:

--pretty=oneline
例如,

明确使用规则1。

关于%H %gd %s的说法,或者没有说,它大致相当于%h %gd %s--abbrev-commit,具体取决于您是否使用log.decorate=auto 。但是 - 这在文档中也有些缺失 - 如果你在配置中设置%d并且 stdout将转到交互设备, 1 你也会得到{已插入{1}}。

1 "互动设备"是什么被指定为" tty"由C库isatty函数。

答案 1 :(得分:1)

const Example = () => { React.useEffect(() => { // do stuff here }, []); } 的默认格式字符串是这样的:

reflog

可以使用git reflog --format='%C(auto)%h %gd: %gs (%s)' 修改颜色。例如,要将初始黄色更改为洋红色:

%C

请注意,git reflog --format='%C(magenta)%h%C(reset) %gd: %gs (%s)' 是绝对必要的,因为使用%C(reset)实现着色并且必须正确终止它们。如果您有好奇心,请查看ANSI escape sequences代码中的color.h,了解这些序列的外观。

对于所有可能的格式字符串,请参阅git中的format:<string>

man git-log