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

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


SYNOPSIS
--------
[verse]
'git reflog' <subcommand> <options>

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

[verse]
'git reflog' ['show'] [log-options] [<ref>]
'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
	[--rewrite] [--updateref] [--stale-fix]
	[--dry-run] [--verbose] [--all | <refs>...]
'git reflog delete' [--rewrite] [--updateref]
	[--dry-run] [--verbose] ref@\{specifier\}...

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.

This command manages the information recorded in the reflogs.

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 "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].

The "delete" subcommand deletes single entries from the reflog. 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.


OPTIONS
-------

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

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


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

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

--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.


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`.


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