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