有没有办法让git-reflog在每个条目旁边显示日期?

And*_*ier 266 git reflog git-reflog

默认情况下,git-reflog命令不会在每个条目旁边显示日期,这让我感到奇怪的疏忽; 我认为这会非常有帮助.

是否有任何命令行选项或其他调整,可以使用它们来显示添加每个reflog条目的时间?该联机帮助页即将发布......

Bal*_*Pal 393

在手册页写入时,您可以根据需要使用选项git log,说git reflog --pretty=short或任何其他选项

尝试

git reflog --date=iso
Run Code Online (Sandbox Code Playgroud)

  • 这会将头号(或任何正确的术语)替换为日期.你能两个都有吗? (9认同)
  • @Marco你似乎必须使用自定义格式:`git reflog --format ='%C(auto)%h%<|(17)%gd%C(蓝色)%ci%C(重置)%s "`.我为此添加了一个别名:https://github.com/blueyed/dotfiles/commit/5c4e4be9fc6a56d1ccbc16398ac3fef007d5cc47 (6认同)
  • @blueyed不太一样 - reflog 命令中的 `--date=iso` 显示创建该 reflog 条目的时间,而不是提交的时间。仍然感谢你的别名,因为我用它来制作更漂亮的引用日志。 (2认同)
  • 您可以将两者结合起来:`git reflog --date=iso --pretty=short` (2认同)

Kla*_*urn 34

您可以使用以下--walk-reflogs变体git log:

git log -g
Run Code Online (Sandbox Code Playgroud)

默认情况下这相当冗长,并在其他事项中打印日期.您可以使用标准--pretty=标志对其进行格式化.

您还可以直接使用reflog命令和--pretty=标志来格式化输出.

git reflog --pretty='%cd %h %gd %gs'
Run Code Online (Sandbox Code Playgroud)

在上面的格式中,%cd显示正常reflog输出左侧的提交日期.

  • `git log --walk-reflogs --date = iso`刚刚结束了我的一天 (10认同)
  • `%cd`,显示reflog指向的提交日期,遗憾的是,这不是我(或OP)所追求的:我们想要reflog条目的日期. (7认同)

Wen*_* Du 14

在此输入图像描述

如果您只想查看相对于当前时间的日期,可以使用以下命令:

git reflog --date=relative
Run Code Online (Sandbox Code Playgroud)

为了节省一些输入,您可以为其创建一个 git 别名(rl- 的缩写reflog):

git config --global alias.rl "reflog --date=relative"
Run Code Online (Sandbox Code Playgroud)

并使用别名,如下所示(-10最后的 是显示最后 10 个操作):

git rl -10
Run Code Online (Sandbox Code Playgroud)


小智 6

告诉您git采用何种格式计算reflog条目或定时reflog条目,即

$ git reflog @{now}

$ git reflog @{0}
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 6

注意 git 2.10(2016 年第三季度)改进了关于日期的文档git reflog

请参阅Jeff King ( ) 的commit 642833dcommit 1a2a1e8(2016 年 7 月 27 日)和commit d38c7b2commit 522259dcommit 83c9f95commit 2b68222(2016 年 7 月 22 日。 帮助者:杰夫·金 ( )(由Junio C Hamano合并-- --提交 0d32799,2016 年 8 月 8 日)peff
peff
gitster

rev-list选项被更新

输出中的 reflog 指示符可能显示为ref@{Nth}(其中Nth是 reflog 中的反向时间索引)或作为ref@{timestamp}(带有该条目的时间戳),具体取决于一些规则。

它包括: - 关于以下内容的更新--date=raw

将日期显示为自纪元 (1970-01-01 00:00:00 UTC) 以来的秒数,后跟一个空格,然后是时区作为与 UTC 的偏移量(a+-四位数字;前两位是小时,以及后两个是分钟)。
即,就好像时间戳是用strftime("%s %z"))格式化的一样。
请注意,该-local选项不会影响该seconds-since-epoch 值(始终以 UTC 度量),但会切换伴随的时区值。

还有一个新选项: --date=unix

将日期显示为 Unix 纪元时间戳(自 1970 年以来的秒数)。
与 一样--raw,这始终采用 UTC 格式,因此-local无效。


blu*_*yed 5

您必须使用自定义格式:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
Run Code Online (Sandbox Code Playgroud)

在以上格式中,%h是提交哈希,%cr是相对提交者日期,%gs是reflog主题,并且%s是提交主题。在git-log文档中查看其他可能的占位符。例如,使用%ci代替%cr将显示绝对提交日期。

您可以使用自定义pretty格式将其保存在〜/ .gitconfig中,并通过别名引用它:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
Run Code Online (Sandbox Code Playgroud)

  • @ErikE - 只需将 cr 更改为 ci 即可获取每个操作的完整时间戳: git reflog --format='%C(auto)%h %&lt;|(20)%gd %C(blue) %ci%C(重置)%gs (%s)'` (2认同)

man*_*nza 5

使用 ohmyzsh将输出格式化git reflogglol

git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%cr) %C(bold blue)<%an>%Creset'
Run Code Online (Sandbox Code Playgroud)

使用 ohmyzsh将输出格式化git reflogglod

git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%ad) %C(bold blue)<%an>%Creset'
Run Code Online (Sandbox Code Playgroud)

我使用这两个别名以及其他一些别名和函数为 ohmyzsh制作了一个自定义插件git-mnz 。grlolgrlod

** 抱歉,如果没有向 git 插件发送 PR,但是有数百个 PR 等待合并..