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

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


SYNOPSIS
--------
'git reflog' <subcommand> <options>

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

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

Reflog is a mechanism to record when the tip of branches are
updated.  This command is to manage the information recorded in it.

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

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

The reflog is 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", and so on. See linkgit:git-rev-parse[1] for
more details.

To delete single entries from the reflog, use the subcommand "delete"
and specify the _exact_ entry (e.g. "`git reflog delete master@\{2\}`").


OPTIONS
-------

--stale-fix::
	This revamps the logic -- the definition of "broken commit"
	becomes: a commit that is not reachable from any of the refs and
	there is a missing object among the commit, tree, or blob
	objects reachable from it that is not reachable from any of the
	refs.
+
This computation involves traversing all the reachable objects, i.e. it
has the same cost as 'git-prune'.  Fortunately, once this is run, we
should not have to ever worry about missing objects, because the current
prune and pack-objects know about reflogs and protect objects referred by
them.

--expire=<time>::
	Entries older than this time are pruned.  Without the
	option it is taken from configuration `gc.reflogExpire`,
	which in turn defaults to 90 days.

--expire-unreachable=<time>::
	Entries older than this time and are not reachable from
	the current tip of the branch are pruned.  Without the
	option it is taken from configuration
	`gc.reflogExpireUnreachable`, which in turn defaults to
	30 days.

--all::
	Instead of listing <refs> explicitly, prune all refs.

--updateref::
	Update the ref with the sha1 of the top reflog entry (i.e.
	<ref>@\{0\}) after expiring or deleting.

--rewrite::
	While expiring or deleting, adjust each reflog entry to ensure
	that the `old` sha1 field points to the `new` sha1 field of the
	previous entry.

--verbose::
	Print extra information on screen.

Author
------
Written by Junio C Hamano <gitster@pobox.com>

Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

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