Reputation: 17732
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...
Upvotes: 497
Views: 123196
Reputation: 27858
You can use a custom format, e.g.,
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)
Upvotes: 25
Reputation: 11347
If you just want to see the dates relative to the current time, you can use the following command:
git reflog --date=relative
To save some typing, you can create a git alias for it (rl
- short for reflog
):
git config --global alias.rl "reflog --date=relative"
And use the alias instead, like so (the -10
at the end is to show the last 10 actions):
git rl -10
Upvotes: 24
Reputation: 121
Tell git
in what format, either counted reflog
entries or timed reflog
entries, i.e.
git reflog @{now}
git reflog @{0}
Upvotes: 12
Reputation: 6215
Format the git reflog
output as the glol
with ohmyzsh:
git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%cr) %C(bold blue)<%an>%Creset'
Format the git reflog
output as the glod
with ohmyzsh:
git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%ad) %C(bold blue)<%an>%Creset'
I made a custom plugin git-mnz for ohmyzsh with these two aliases grlol
, grlod
and some other aliases and functions.
** Sorry if didn't sent a PR to the git plugin, but there are hundreds PR waiting to be merged..
Upvotes: 5
Reputation: 834
git reflog --pretty=medium
... but they make it really nasty to find out (there's no bash completion for git-log options, the log
man page doesn't document the placeholder strings for various pretty built-in profiles, plus there are still some differences from the default git-log
format, e.g. you'd have to pass --abbrev
)
Upvotes: 3
Reputation: 17163
Per the man page, you can use git log
options, e.g.,
git reflog --pretty=short
git reflog --date=iso
Upvotes: 700
Reputation: 1324557
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.
Upvotes: 6
Reputation: 44377
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.
Upvotes: 49