]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-reflog.txt
Merge branch 'sb/userdiff-dts'
[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]
c9ef0d95 23 [--dry-run | -n] [--verbose] [--all [--single-worktree] | <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
c9ef0d95
NTND
75--single-worktree::
76 By default when `--all` is specified, reflogs from all working
77 trees are processed. This option limits the processing to reflogs
78 from the current working tree only.
79
4aec56d1 80--expire=<time>::
fe2a1816
MH
81 Prune entries older than the specified time. If this option is
82 not specified, the expiration time is taken from the
83 configuration setting `gc.reflogExpire`, which in turn
84 defaults to 90 days. `--expire=all` prunes entries regardless
85 of their age; `--expire=never` turns off pruning of reachable
86 entries (but see `--expire-unreachable`).
4aec56d1
JH
87
88--expire-unreachable=<time>::
fe2a1816
MH
89 Prune entries older than `<time>` that are not reachable from
90 the current tip of the branch. If this option is not
91 specified, the expiration time is taken from the configuration
92 setting `gc.reflogExpireUnreachable`, which in turn defaults
93 to 30 days. `--expire-unreachable=all` prunes unreachable
94 entries regardless of their age; `--expire-unreachable=never`
61929404 95 turns off early pruning of unreachable entries (but see
fe2a1816 96 `--expire`).
4aec56d1 97
cf2756ae 98--updateref::
fe2a1816 99 Update the reference to the value of the top reflog entry (i.e.
5e6f003c
MH
100 <ref>@\{0\}) if the previous top entry was pruned. (This
101 option is ignored for symbolic references.)
cf2756ae
BC
102
103--rewrite::
fe2a1816
MH
104 If a reflog entry's predecessor is pruned, adjust its "old"
105 SHA-1 to be equal to the "new" SHA-1 field of the entry that
106 now precedes it.
107
108--stale-fix::
109 Prune any reflog entries that point to "broken commits". A
110 broken commit is a commit that is not reachable from any of
111 the reference tips and that refers, directly or indirectly, to
112 a missing commit, tree, or blob object.
113+
114This computation involves traversing all the reachable objects, i.e. it
115has the same cost as 'git prune'. It is primarily intended to fix
116corruption caused by garbage collecting using older versions of Git,
117which didn't protect objects referred to by reflogs.
118
119-n::
120--dry-run::
121 Do not actually prune any entries; just show what would have
122 been pruned.
cf2756ae 123
a5d41015
MB
124--verbose::
125 Print extra information on screen.
126
fe2a1816
MH
127
128Options for `delete`
129~~~~~~~~~~~~~~~~~~~~
130
131`git reflog delete` accepts options `--updateref`, `--rewrite`, `-n`,
132`--dry-run`, and `--verbose`, with the same meanings as when they are
133used with `expire`.
134
135
4aec56d1
JH
136GIT
137---
9e1f0a85 138Part of the linkgit:git[1] suite