| git-gc(1) | 
 | ========= | 
 |  | 
 | NAME | 
 | ---- | 
 | git-gc - Cleanup unnecessary files and optimize the local repository | 
 |  | 
 |  | 
 | SYNOPSIS | 
 | -------- | 
 | 'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] | 
 |  | 
 | 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 '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. 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 | 
 | 	space utilization and performance.  This option will cause | 
 | 	'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 | 
 | 	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` configuration variable, then | 
 | all loose objects are combined into a single pack using | 
 | `git repack -d -l`.  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`, | 
 | then existing packs (except those marked with a `.keep` file) | 
 | are consolidated into a single pack by using the `-A` option of | 
 | 'git repack'. Setting `gc.autopacklimit` to 0 disables | 
 | automatic consolidation of packs. | 
 |  | 
 | --prune=<date>:: | 
 | 	Prune loose objects older than date (default is 2 weeks ago, | 
 | 	overridable by the config variable `gc.pruneExpire`).  This | 
 | 	option is on by default. | 
 |  | 
 | --no-prune:: | 
 | 	Do not prune any loose objects. | 
 |  | 
 | --quiet:: | 
 | 	Suppress all progress reports. | 
 |  | 
 | Configuration | 
 | ------------- | 
 |  | 
 | The optional configuration variable 'gc.reflogExpire' can be | 
 | set to indicate how long historical entries within each branch's | 
 | 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.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. | 
 |  | 
 | 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". | 
 |  | 
 |  | 
 | 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 reference 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. | 
 |  | 
 | HOOKS | 
 | ----- | 
 |  | 
 | The 'git gc --auto' command will run the 'pre-auto-gc' hook.  See | 
 | linkgit:githooks[5] for more information. | 
 |  | 
 |  | 
 | SEE ALSO | 
 | -------- | 
 | linkgit:git-prune[1] | 
 | linkgit:git-reflog[1] | 
 | linkgit:git-repack[1] | 
 | linkgit:git-rerere[1] | 
 |  | 
 | Author | 
 | ------ | 
 | Written by Shawn O. Pearce <spearce@spearce.org> | 
 |  | 
 | GIT | 
 | --- | 
 | Part of the linkgit:git[1] suite |