@ -45,28 +45,12 @@ OPTIONS
--auto::
--auto::
With this option, 'git gc' checks whether any housekeeping is
With this option, 'git gc' checks whether any housekeeping is
required; if not, it exits without performing any work.
required; if not, it exits without performing any work.
Some git commands run `git gc --auto` after performing
operations that could create many loose objects. Housekeeping
is required if there are too many loose objects or too many
packs in the repository.
+
+
If the number of loose objects exceeds the value of the `gc.auto`
See the `gc.auto` option in the "CONFIGURATION" section below for how
configuration variable, then all loose objects are combined into a
this heuristic works.
single pack. Setting the value of `gc.auto`
to 0 disables automatic packing of loose objects.
+
+
If the number of packs exceeds the value of `gc.autoPackLimit`,
Once housekeeping is triggered by exceeding the limits of
then existing packs (except those marked with a `.keep` file
configuration options such as `gc.auto` and `gc.autoPackLimit`, all
or over `gc.bigPackThreshold` limit)
are consolidated into a single pack.
If the amount of memory estimated for `git repack` to run smoothly is
not available and `gc.bigPackThreshold` is not set, the largest
pack will also be excluded (this is the equivalent of running `git gc`
with `--keep-base-pack`).
Setting `gc.autoPackLimit` to 0 disables automatic consolidation of
packs.
+
If houskeeping is required due to many loose objects or packs, all
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
be performed as well.
be performed as well.
@ -97,66 +81,10 @@ be performed as well.
CONFIGURATION
CONFIGURATION
-------------
-------------
The optional configuration variable `gc.reflogExpire` can be
The below documentation is the same as what's found in
set to indicate how long historical entries within each branch's
linkgit:git-config[1]:
reflog should remain available in this repository. The setting is
expressed as a length of time, for example '90 days' or '3 months'.
It defaults to '90 days'.
The optional configuration variable `gc.reflogExpireUnreachable`
can be set to indicate how long historical reflog entries which
are not part of the current branch should remain available in
this repository. These types of entries are generally created as
a result of using `git commit --amend` or `git rebase` and are the
commits prior to the amend or rebase occurring. Since these changes
are not part of the current project most users will want to expire
them sooner. This option defaults to '30 days'.
The above two configuration variables can be given to a pattern. For
example, this sets non-default expiry values only to remote-tracking
branches:
------------
[gc "refs/remotes/*"]
reflogExpire = never
reflogExpireUnreachable = 3 days
------------
The optional configuration variable `gc.rerereResolved` indicates
how long records of conflicted merge you resolved earlier are
kept. This defaults to 60 days.
The optional configuration variable `gc.rerereUnresolved` indicates
how long records of conflicted merge you have not resolved are
kept. This defaults to 15 days.
The optional configuration variable `gc.packRefs` determines if
'git gc' runs 'git pack-refs'. This can be set to "notbare" to enable
it within all non-bare repos or it can be set to a boolean value.
This defaults to true.
The optional configuration variable `gc.writeCommitGraph` determines if
'git gc' should run 'git commit-graph write'. This can be set to a
boolean value. This defaults to false.
The optional configuration variable `gc.aggressiveWindow` controls how
much time is spent optimizing the delta compression of the objects in
the repository when the --aggressive option is specified. The larger
the value, the more time is spent optimizing the delta compression. See
the documentation for the --window option in linkgit:git-repack[1] for
more details. This defaults to 250.
Similarly, the optional configuration variable `gc.aggressiveDepth`
controls --depth option in linkgit:git-repack[1]. This defaults to 50.
The optional configuration variable `gc.pruneExpire` controls how old
the unreferenced loose objects have to be before they are pruned. The
default is "2 weeks ago".
Optional configuration variable `gc.worktreePruneExpire` controls how
old a stale working tree should be before `git worktree prune` deletes
it. Default is "3 months ago".
include::config/gc.txt[]
NOTES
NOTES
-----
-----