t3903-stash.sh: Add missing '&&' to body of testcase
[git/git.git] / Documentation / git-reflog.txt
CommitLineData
4aec56d1
JH
1git-reflog(1)
2=============
3
4NAME
5----
6git-reflog - Manage reflog information
7
8
9SYNOPSIS
10--------
cf39f54e 11'git reflog' <subcommand> <options>
4aec56d1
JH
12
13DESCRIPTION
14-----------
cf39f54e
LT
15The command takes various subcommands, and different options
16depending on the subcommand:
17
18[verse]
a5d41015 19git reflog expire [--dry-run] [--stale-fix] [--verbose]
cf39f54e
LT
20 [--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...
21
552cecc2
JS
22git reflog delete ref@\{specifier\}...
23
97e92e2c 24git reflog [show] [log-options] [<ref>]
4aec56d1
JH
25
26Reflog is a mechanism to record when the tip of branches are
27updated. This command is to manage the information recorded in it.
28
29The subcommand "expire" is used to prune older reflog entries.
30Entries older than `expire` time, or entries older than
31`expire-unreachable` time and are not reachable from the current
32tip, are removed from the reflog. This is typically not used
5162e697 33directly by the end users -- instead, see linkgit:git-gc[1].
4aec56d1 34
02783075 35The subcommand "show" (which is also the default, in the absence of any
cf39f54e 36subcommands) will take all the normal log options, and show the log of
97e92e2c
MM
37the reference provided in the command-line (or `HEAD`, by default).
38The reflog will cover all recent actions (HEAD reflog records branch switching
39as well). It is an alias for 'git log -g --abbrev-commit --pretty=oneline';
5162e697 40see linkgit:git-log[1].
97e92e2c
MM
41
42The reflog is useful in various git commands, to specify the old value
43of a reference. For example, `HEAD@\{2\}` means "where HEAD used to be
44two moves ago", `master@\{one.week.ago\}` means "where master used to
5162e697 45point to one week ago", and so on. See linkgit:git-rev-parse[1] for
97e92e2c 46more details.
4aec56d1 47
552cecc2
JS
48To delete single entries from the reflog, use the subcommand "delete"
49and specify the _exact_ entry (e.g. ``git reflog delete master@\{2\}'').
50
4aec56d1
JH
51
52OPTIONS
53-------
54
cb877cd7
JN
55--stale-fix::
56 This revamps the logic -- the definition of "broken commit"
57 becomes: a commit that is not reachable from any of the refs and
58 there is a missing object among the commit, tree, or blob
59 objects reachable from it that is not reachable from any of the
60 refs.
61+
62This computation involves traversing all the reachable objects, i.e. it
63has the same cost as 'git prune'. Fortunately, once this is run, we
64should not have to ever worry about missing objects, because the current
65prune and pack-objects know about reflogs and protect objects referred by
66them.
67
4aec56d1
JH
68--expire=<time>::
69 Entries older than this time are pruned. Without the
70 option it is taken from configuration `gc.reflogExpire`,
71 which in turn defaults to 90 days.
72
73--expire-unreachable=<time>::
74 Entries older than this time and are not reachable from
75 the current tip of the branch are pruned. Without the
76 option it is taken from configuration
77 `gc.reflogExpireUnreachable`, which in turn defaults to
78 30 days.
79
80--all::
81 Instead of listing <refs> explicitly, prune all refs.
82
a5d41015
MB
83--verbose::
84 Print extra information on screen.
85
4aec56d1
JH
86Author
87------
88Written by Junio C Hamano <junkio@cox.net>
89
90Documentation
91--------------
92Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
93
94GIT
95---
5162e697 96Part of the linkgit:git[7] suite