git-reflog(1)
=============

NAME
----
git-reflog - Manage reflog information


SYNOPSIS
--------
[synopsis]
git reflog [show] [<log-options>] [<ref>]
git reflog list
git reflog exists <ref>
git reflog write <ref> <old-oid> <new-oid> <message>
git reflog delete [--rewrite] [--updateref]
	[--dry-run | -n] [--verbose] <ref>@{<specifier>}...
git reflog drop [--all [--single-worktree] | <refs>...]
git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
	[--rewrite] [--updateref] [--stale-fix]
	[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]

DESCRIPTION
-----------
This command manages the information recorded in the reflogs.

Reference logs, or "reflogs", record when the tips of branches and
other references were updated in the local repository. Reflogs are
useful in various Git commands, to specify the old value of a
reference. For example, `HEAD@{2}` means "where HEAD used to be two
moves ago", `master@{one.week.ago}` means "where master used to point
to one week ago in this local repository", and so on. See
linkgit:gitrevisions[7] for more details.

The command takes various subcommands, and different options
depending on the subcommand:

The "show" subcommand (which is also the default, in the absence of
any subcommands) shows the log of the reference provided in the
command-line (or `HEAD`, by default). The reflog covers all recent
actions, and in addition the `HEAD` reflog records branch switching.
`git reflog show` is an alias for `git log -g --abbrev-commit
--pretty=oneline`; see linkgit:git-log[1] for more information.

The "list" subcommand lists all refs which have a corresponding reflog.

The "exists" subcommand checks whether a ref has a reflog.  It exits
with zero status if the reflog exists, and non-zero status if it does
not.

The "write" subcommand writes a single entry to the reflog of a given
reference. This new entry is appended to the reflog and will thus become
the most recent entry. The reference name must be fully qualified. Both the old
and new object IDs must not be abbreviated and must point to existing objects.
The reflog message gets normalized.

The "delete" subcommand deletes single entries from the reflog, but
not the reflog itself. Its argument must be an _exact_ entry (e.g. "`git
reflog delete master@{2}`"). This subcommand is also typically not used
directly by end users.

The "drop" subcommand completely removes the reflog for the specified
references. This is in contrast to "expire" and "delete", both of which
can be used to delete reflog entries, but not the reflog itself.

The "expire" subcommand prunes older reflog entries. Entries older
than `expire` time, or entries older than `expire-unreachable` time
and not reachable from the current tip, are removed from the reflog.
This is typically not used directly by end users -- instead, see
linkgit:git-gc[1].

OPTIONS
-------

Options for `show`
~~~~~~~~~~~~~~~~~~

`git reflog show` accepts any of the options accepted by `git log`.


Options for `delete`
~~~~~~~~~~~~~~~~~~~~

`git reflog delete` accepts options `--updateref`, `--rewrite`, `-n`,
`--dry-run`, and `--verbose`, with the same meanings as when they are
used with `expire`.

Options for `drop`
~~~~~~~~~~~~~~~~~~

`--all`::
	Drop the reflogs of all references from all worktrees.

`--single-worktree`::
	By default when `--all` is specified, reflogs from all working
	trees are dropped. This option limits the processing to reflogs
	from the current working tree only.


Options for `expire`
~~~~~~~~~~~~~~~~~~~~

`--all`::
	Process the reflogs of all references.

`--single-worktree`::
	By default when `--all` is specified, reflogs from all working
	trees are processed. This option limits the processing to reflogs
	from the current working tree only.

`--expire=<time>`::
	Prune entries older than the specified time. If this option is
	not specified, the expiration time is taken from the
	configuration setting `gc.reflogExpire`, which in turn
	defaults to 90 days. `--expire=all` prunes entries regardless
	of their age; `--expire=never` turns off pruning of reachable
	entries (but see `--expire-unreachable`).

`--expire-unreachable=<time>`::
	Prune entries older than `<time>` that are not reachable from
	the current tip of the branch. If this option is not
	specified, the expiration time is taken from the configuration
	setting `gc.reflogExpireUnreachable`, which in turn defaults
	to 30 days. `--expire-unreachable=all` prunes unreachable
	entries regardless of their age; `--expire-unreachable=never`
	turns off early pruning of unreachable entries (but see
	`--expire`).

`--updateref`::
	Update the reference to the value of the top reflog entry (i.e.
	<ref>@\{0\}) if the previous top entry was pruned.  (This
	option is ignored for symbolic references.)

`--rewrite`::
	If a reflog entry's predecessor is pruned, adjust its "old"
	SHA-1 to be equal to the "new" SHA-1 field of the entry that
	now precedes it.

`--stale-fix`::
	Prune any reflog entries that point to "broken commits". A
	broken commit is a commit that is not reachable from any of
	the reference tips and that refers, directly or indirectly, to
	a missing commit, tree, or blob object.
+
This computation involves traversing all the reachable objects, i.e. it
has the same cost as 'git prune'.  It is primarily intended to fix
corruption caused by garbage collecting using older versions of Git,
which didn't protect objects referred to by reflogs.

`-n`::
`--dry-run`::
	Do not actually prune any entries; just show what would have
	been pruned.

`--verbose`::
	Print extra information on screen.


GIT
---
Part of the linkgit:git[1] suite
