]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-reflog.txt
fsck: check HEAD and reflog from other worktrees
[thirdparty/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--------
7791a1d9 11[verse]
cf39f54e 12'git reflog' <subcommand> <options>
4aec56d1
JH
13
14DESCRIPTION
15-----------
cf39f54e
LT
16The command takes various subcommands, and different options
17depending on the subcommand:
18
19[verse]
04c2407e 20'git reflog' ['show'] [log-options] [<ref>]
fe2a1816
MH
21'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
22 [--rewrite] [--updateref] [--stale-fix]
0ba01403 23 [--dry-run | -n] [--verbose] [--all | <refs>...]
fe2a1816 24'git reflog delete' [--rewrite] [--updateref]
0ba01403 25 [--dry-run | -n] [--verbose] ref@\{specifier\}...
afcb2e7a 26'git reflog exists' <ref>
fe2a1816
MH
27
28Reference logs, or "reflogs", record when the tips of branches and
29other references were updated in the local repository. Reflogs are
30useful in various Git commands, to specify the old value of a
31reference. For example, `HEAD@{2}` means "where HEAD used to be two
32moves ago", `master@{one.week.ago}` means "where master used to point
33to one week ago in this local repository", and so on. See
34linkgit:gitrevisions[7] for more details.
35
36This command manages the information recorded in the reflogs.
37
38The "show" subcommand (which is also the default, in the absence of
39any subcommands) shows the log of the reference provided in the
40command-line (or `HEAD`, by default). The reflog covers all recent
41actions, and in addition the `HEAD` reflog records branch switching.
42`git reflog show` is an alias for `git log -g --abbrev-commit
43--pretty=oneline`; see linkgit:git-log[1] for more information.
44
45The "expire" subcommand prunes older reflog entries. Entries older
46than `expire` time, or entries older than `expire-unreachable` time
47and not reachable from the current tip, are removed from the reflog.
48This is typically not used directly by end users -- instead, see
49linkgit:git-gc[1].
50
51The "delete" subcommand deletes single entries from the reflog. Its
52argument must be an _exact_ entry (e.g. "`git reflog delete
53master@{2}`"). This subcommand is also typically not used directly by
54end users.
4aec56d1 55
afcb2e7a
DT
56The "exists" subcommand checks whether a ref has a reflog. It exits
57with zero status if the reflog exists, and non-zero status if it does
58not.
4aec56d1 59
fe2a1816
MH
60OPTIONS
61-------
97e92e2c 62
fe2a1816
MH
63Options for `show`
64~~~~~~~~~~~~~~~~~~
4aec56d1 65
fe2a1816 66`git reflog show` accepts any of the options accepted by `git log`.
552cecc2 67
4aec56d1 68
fe2a1816
MH
69Options for `expire`
70~~~~~~~~~~~~~~~~~~~~
4aec56d1 71
fe2a1816
MH
72--all::
73 Process the reflogs of all references.
cb877cd7 74
4aec56d1 75--expire=<time>::
fe2a1816
MH
76 Prune entries older than the specified time. If this option is
77 not specified, the expiration time is taken from the
78 configuration setting `gc.reflogExpire`, which in turn
79 defaults to 90 days. `--expire=all` prunes entries regardless
80 of their age; `--expire=never` turns off pruning of reachable
81 entries (but see `--expire-unreachable`).
4aec56d1
JH
82
83--expire-unreachable=<time>::
fe2a1816
MH
84 Prune entries older than `<time>` that are not reachable from
85 the current tip of the branch. If this option is not
86 specified, the expiration time is taken from the configuration
87 setting `gc.reflogExpireUnreachable`, which in turn defaults
88 to 30 days. `--expire-unreachable=all` prunes unreachable
89 entries regardless of their age; `--expire-unreachable=never`
61929404 90 turns off early pruning of unreachable entries (but see
fe2a1816 91 `--expire`).
4aec56d1 92
cf2756ae 93--updateref::
fe2a1816 94 Update the reference to the value of the top reflog entry (i.e.
5e6f003c
MH
95 <ref>@\{0\}) if the previous top entry was pruned. (This
96 option is ignored for symbolic references.)
cf2756ae
BC
97
98--rewrite::
fe2a1816
MH
99 If a reflog entry's predecessor is pruned, adjust its "old"
100 SHA-1 to be equal to the "new" SHA-1 field of the entry that
101 now precedes it.
102
103--stale-fix::
104 Prune any reflog entries that point to "broken commits". A
105 broken commit is a commit that is not reachable from any of
106 the reference tips and that refers, directly or indirectly, to
107 a missing commit, tree, or blob object.
108+
109This computation involves traversing all the reachable objects, i.e. it
110has the same cost as 'git prune'. It is primarily intended to fix
111corruption caused by garbage collecting using older versions of Git,
112which didn't protect objects referred to by reflogs.
113
114-n::
115--dry-run::
116 Do not actually prune any entries; just show what would have
117 been pruned.
cf2756ae 118
a5d41015
MB
119--verbose::
120 Print extra information on screen.
121
fe2a1816
MH
122
123Options for `delete`
124~~~~~~~~~~~~~~~~~~~~
125
126`git reflog delete` accepts options `--updateref`, `--rewrite`, `-n`,
127`--dry-run`, and `--verbose`, with the same meanings as when they are
128used with `expire`.
129
130
4aec56d1
JH
131GIT
132---
9e1f0a85 133Part of the linkgit:git[1] suite