Is there a way to cause git-reflog to show a date alongside each entry?
Per the man page, you can use git log
options, e.g.,
git reflog --pretty=short
git reflog --date=iso
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.
You can 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)
Tell git
in what format, either counted reflog
entries or timed reflog
entries, i.e.
$ git reflog @{now}
$ git reflog @{0}
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}
(whereNth
is the reverse-chronological index in the reflog) or asref@{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 withstrftime("%s %z")
).
Note that the-local
option does not affect theseconds-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.