index 229a7c9b30482eb2d8729b581004bc776fa10edf..0cce3894cbef894db7af01ce9d62bd558cae7b3e 100644 (file)
--- a/Documentation/git-gc.txt
+++ b/Documentation/git-gc.txt
SYNOPSIS
--------
-'git-gc' [--aggressive] [--auto] [--quiet]
+'git gc' [--aggressive] [--auto] [--quiet]
DESCRIPTION
-----------
Runs a number of housekeeping tasks within the current repository,
such as compressing file revisions (to reduce disk space and increase
performance) and removing unreachable objects which may have been
-created from prior invocations of linkgit:git-add[1].
+created from prior invocations of `git-add`.
Users are encouraged to run this task on a regular basis within
each repository to maintain good disk space utilization and good
-operating performance. Some git commands may automatically run
-`git-gc`; see the `--auto` flag below for details.
+operating performance.
+
+Some git commands may automatically run `git-gc`; see the `--auto` flag
+below for details. If you know what you're doing and all you want is to
+disable this behavior permanently without further considerations, just do:
+
+----------------------
+$ git config --global gc.auto 0
+----------------------
OPTIONS
-------
--aggressive::
- Usually 'git-gc' runs very quickly while providing good disk
+ Usually `git-gc` runs very quickly while providing good disk
space utilization and performance. This option will cause
- git-gc to more aggressively optimize the repository at the expense
+ `git-gc` to more aggressively optimize the repository at the expense
of taking much more time. The effects of this optimization are
persistent, so this option only needs to be used occasionally; every
few hundred changesets or so.
--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.
Some git commands run `git gc --auto` after performing
operations that could create many loose objects.
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 "nobare" to enable
+`git-gc` runs `git-pack-refs`. This can be set to "nobare" to enable
it within all non-bare repos or it can be set to a boolean value.
This defaults to true.
the unreferenced loose objects have to be before they are pruned. The
default is "2 weeks ago".
-See Also
+
+Notes
+-----
+
+`git-gc` tries very hard to be safe about the garbage it collects. In
+particular, it will keep not only objects referenced by your current set
+of branches and tags, but also objects referenced by the index, remote
+tracking branches, refs saved by `git-filter-branch` in
+refs/original/, or reflogs (which may references commits in branches
+that were later amended or rewound).
+
+If you are expecting some objects to be collected and they aren't, check
+all of those locations and decide whether it makes sense in your case to
+remove those references.
+
+SEE ALSO
--------
linkgit:git-prune[1]
linkgit:git-reflog[1]
GIT
---
-Part of the linkgit:git[7] suite
+Part of the linkgit:git[1] suite