Is there a way to cause git-reflog to show a date alongside each entry?

筅森魡賤 提交于 2019-12-17 21:38:02

问题


The git-reflog command doesn't by default show a date alongside each entry, which strikes me as a strange oversight; I think this would be very helpful.

Are there any command-line options, or other tweaks, which can be employed to cause it to show when each reflog entry was added? The manpage isn't forthcoming...


回答1:


As the man page writes you can use the options for git log, say git reflog --pretty=short or any other as you like

try

git reflog --date=iso



回答2:


You can use the --walk-reflogs variant of git log:

git log -g

This is rather verbose by default, and prints the date among other things. You can format it with the standard --pretty= flag.

You can also use the reflog command directly with the --pretty= flag to format the output.

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

In the format above, %cd shows the commit date to the left of the normal reflog output.




回答3:


Tell git in what format, either counted reflog entries or timed reflog entries, i.e.

$ git reflog @{now}

$ git reflog @{0}



回答4:


You have to use a custom format:

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

In the above format, %h is the commit hash, %cr is the relative committer date, %gs is the reflog subject, and, %s is the commit subject. Look at the git-log docs for other possible placeholders. For instance, using %ci instead of %cr will show absolute commit dates.

You can save this in your ~/.gitconfig using a custom pretty format and refer to it via an alias:

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



回答5:


Note git 2.10 (Q3 2016) improves the documentation about date with git reflog.

See commit 642833d, commit 1a2a1e8 (27 Jul 2016), and commit d38c7b2, commit 522259d, commit 83c9f95, commit 2b68222 (22 Jul 2016) by Jeff King (peff).
Helped-by: Jeff King (peff).
(Merged by Junio C Hamano -- gitster -- in commit 0d32799, 08 Aug 2016)

The rev-list options is updated:

The reflog designator in the output may be shown as ref@{Nth} (where Nth is the reverse-chronological index in the reflog) or as ref@{timestamp} (with the timestamp for that entry), depending on a few rules.

It includes: - an update about --date=raw:

shows the date as seconds since the epoch (1970-01-01 00:00:00 UTC), followed by a space, and then the timezone as an offset from UTC (a + or - with four digits; the first two are hours, and the second two are minutes).
I.e., as if the timestamp were formatted with strftime("%s %z")).
Note that the -local option does not affect the seconds-since-epoch value (which is always measured in UTC), but does switch the accompanying timezone value.

And a new option: --date=unix

shows the date as a Unix epoch timestamp (seconds since 1970).
As with --raw, this is always in UTC and therefore -local has no effect.



来源:https://stackoverflow.com/questions/17369254/is-there-a-way-to-cause-git-reflog-to-show-a-date-alongside-each-entry

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!