]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-gc.txt
diff-delta: use realloc instead of xrealloc
[thirdparty/git.git] / Documentation / git-gc.txt
CommitLineData
30f610b7
SP
1git-gc(1)
2=========
3
4NAME
5----
6git-gc - Cleanup unnecessary files and optimize the local repository
7
8
9SYNOPSIS
10--------
0d7566a5 11'git-gc' [--prune] [--aggressive]
30f610b7
SP
12
13DESCRIPTION
14-----------
15Runs a number of housekeeping tasks within the current repository,
16such as compressing file revisions (to reduce disk space and increase
17performance) and removing unreachable objects which may have been
18created from prior invocations of gitlink:git-add[1].
19
20Users are encouraged to run this task on a regular basis within
21each repository to maintain good disk space utilization and good
22operating performance.
23
e3ff4b24
JH
24OPTIONS
25-------
26
27--prune::
28 Usually `git-gc` packs refs, expires old reflog entries,
29 packs loose objects,
30 and removes old 'rerere' records. Removal
31 of unreferenced loose objects is an unsafe operation
32 while other git operations are in progress, so it is not
33 done by default. Pass this option if you want it, and only
34 when you know nobody else is creating new objects in the
35 repository at the same time (e.g. never use this option
36 in a cron script).
37
0d7566a5
TT
38--aggressive::
39 Usually 'git-gc' runs very quickly while providing good disk
40 space utilization and performance. This option will cause
41 git-gc to more aggressive optimize the repository at the expense
42 of taking much more time. The effects of this optimization are
43 persistent, so this option only needs to be sporadically; every
44 few hundred changesets or so.
e3ff4b24 45
30f610b7
SP
46Configuration
47-------------
48
49The optional configuration variable 'gc.reflogExpire' can be
50set to indicate how long historical entries within each branch's
51reflog should remain available in this repository. The setting is
52expressed as a length of time, for example '90 days' or '3 months'.
53It defaults to '90 days'.
54
55The optional configuration variable 'gc.reflogExpireUnreachable'
56can be set to indicate how long historical reflog entries which
57are not part of the current branch should remain available in
58this repository. These types of entries are generally created as
59a result of using `git commit \--amend` or `git rebase` and are the
23bfbb81 60commits prior to the amend or rebase occurring. Since these changes
30f610b7
SP
61are not part of the current project most users will want to expire
62them sooner. This option defaults to '30 days'.
63
64The optional configuration variable 'gc.rerereresolved' indicates
65how long records of conflicted merge you resolved earlier are
66kept. This defaults to 60 days.
67
68The optional configuration variable 'gc.rerereunresolved' indicates
69how long records of conflicted merge you have not resolved are
70kept. This defaults to 15 days.
71
c2120e5e
JS
72The optional configuration variable 'gc.packrefs' determines if
73`git gc` runs `git-pack-refs`. Without the configuration, `git-pack-refs`
74is not run in bare repositories by default, to allow older dumb-transport
75clients fetch from the repository, but this will change in the future.
30f610b7 76
0d7566a5
TT
77The optional configuration variable 'gc.aggressiveWindow' controls how
78much time is spent optimizing the delta compression of the objects in
79the repository when the --aggressive option is specified. The larger
80the value, the more time is spent optimizing the delta compression. See
81the documentation for the --window' option in gitlink:git-repack[1] for
82more details. This defaults to 10.
83
30f610b7
SP
84See Also
85--------
86gitlink:git-prune[1]
87gitlink:git-reflog[1]
88gitlink:git-repack[1]
89gitlink:git-rerere[1]
90
91Author
92------
93Written by Shawn O. Pearce <spearce@spearce.org>
94
95GIT
96---
97Part of the gitlink:git[7] suite