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