git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Why is reflog so obscure?

From
Thomas Guyot <tguyot@gmail.com>
Date
Jul 11, 2022, 22:55 UTC
Message-ID
<f0bb8ee8-9b38-45a7-a54b-24cf245bb3c8@gmail.com>
In-Reply-To
<CALF=2ANoq1eL-RqK_dLaVThoxbvfhzgPJXFHyD1kX8CFCPx3XA@mail.gmail.com>
On 2022-07-11 17:02, Gerriko io wrote:
Show 16 quoted lines
> I am trying to make sense of reflog as I need to know this to use
> revert and reset properly.
>
> I cannot find the most basic information in the git documentation or online.
>
> Surely the most basic question is whether the reflog is sequential or
> just random logs or whether it is in time ascending or descending
> order.
>
> Without this information I am left baffled and have to guess what this
> line means out of the many:
>
> a0bbd34 (HEAD -> master, origin/master, origin/main)
> refs/remotes/origin/main@{0}: update by push
>
> Why does it have to be so obscure?
Hi,

The reflog is simply a log of where you've been, in descending order (latest entry first), and is branch agnostic. It show every commit you've been on from latest to oldest, and each entry can be heads, tags, or detached commits. Some operations like rebase may even generate multiple entries if it's done in multiple steps (ex conflicts resolution).

I believe its main uses are to delay garbage collect (which happens only after entries have expired form the reflog) and to allow refs selection using @{date} and @{nth} specifiers (see git-rev-parse, and note @{date} is not the commit date but rather the reflog date!)... And it's obviously quite handy to recover a dropped/rewritten ref if you realize you need to undo what you've done.

Since the date is recorded for each entry you can also display it using the --date=<format> option. For example to display reflog entries in local human-readable time, use:

git reflog --date=local

The git-reflog log display options are mostly the same as git-log and documented in git-log's manpage.

Regards,

-- Thomas

Previous: Gerriko ioNext: Jeff King
Message 2 of 8 in “Why is reflog so obscure?”
  1. Gerriko ioJul 11, 2022
  2. Thomas GuyotJul 11, 2022
  3. Jeff KingJul 12, 2022
  4. Thomas GuyotJul 12, 2022
  5. Junio C HamanoJul 12, 2022
  6. Sergey OrganovJul 12, 2022
  7. Junio C HamanoJul 12, 2022
  8. Thomas GuyotJul 14, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.