有没有一种方法可以使git-reflog在每个条目旁边显示一个日期?


303

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

是否有任何命令行选项或其他调整可用来使它在添加每个reflog条目时显示?该手册即将发布...

Answers:


451

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

尝试

git reflog --date=iso

11
这将用日期替换头号(或任何正确的术语)。你们两个都可以吗?
Marco Eckstein 2014年

7
@Marco,看来您必须使用自定义格式:git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'。我增加了一个别名是:github.com/blueyed/dotfiles/commit/...
blueyed

1
@blueyed不太一样-reflog --date=iso命令中的表示创建该reflog条目的时间,而不是提交时间。仍然感谢您的别名,因为我已使用它进行了更漂亮的刷新。
约翰·汉肯斯

36

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

git log -g

默认情况下,这很冗长,并且会打印日期。您可以使用标准--pretty=标志对其进行格式化。

您也可以直接将reflog命令与该--pretty=标志一起使用以格式化输出。

git reflog --pretty='%cd %h %gd %gs'

在以上格式中,%cd将提交日期显示在常规reflog输出的左侧。


9
%cd,不幸的是,它显示了reflog指向的提交日期,这不是我(或OP)之后的日期:我们想要reflog条目的日期。
Thanatos

10
git log --walk-reflogs --date=iso刚刚度过了我的一天
阿洛瓦·马哈德

7

您必须使用自定义格式:

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

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

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

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)

1
问题是%gd它没有显示相同的日期@{now}。在搜索reflog时,知道准确的时间非常重要(例如,“我知道8:57处在正确的状态”)。
ErikE 2015年

2
@ErikE-只需将更cr改为ci以获取每个操作的完整时间戳:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4

6

告诉git计数reflog条目或计时reflog条目采用什么格式,即

$ git reflog @{now}

$ git reflog @{0}

我里面的程序员不喜欢里面的“自然语言”日期{},但是很高兴这种技术也可以使用--date=iso
mwfearnley

5

注意git 2.10(Q3 2016)改进了有关date的文档git reflog

请参阅Jeff King(提交642833d提交1a2a1e8(2016年7月27日)和提交d38c7b2提交522259d提交83c9f95提交2b68222(2016年7月22日。 帮助:Jeff King((由Junio C Hamano合并--commit 0d32799,2016年8月8日)peff
peff
gitster

rev-list选项被更新

根据一些规则,输出中的reflog指示符可能显示为ref@{Nth}(其中Nthreflog中的时间倒序索引)或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无效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.