Home Explore Blog CI



git

2nd chunk of `Documentation/git-gc.adoc`
644c3c103c9068d1ffa4fe7336191c4925aa3291dbcd660b0000000100000885
 into a cruft pack, limit the
	size of new cruft packs to be at most `<n>` bytes. Overrides any
	value specified via the `gc.maxCruftSize` configuration. See
	the `--max-cruft-size` option of linkgit:git-repack[1] for
	more.

--expire-to=<dir>::
	When packing unreachable objects into a cruft pack, write a cruft
	pack containing pruned objects (if any) to the directory `<dir>`.
	This option only has an effect when used together with `--cruft`.
	See the `--expire-to` option of linkgit:git-repack[1] for
	more information.

--prune=<date>::
	Prune loose objects older than date (default is 2 weeks ago,
	overridable by the config variable `gc.pruneExpire`).
	--prune=now prunes loose objects regardless of their age and
	increases the risk of corruption if another process is writing to
	the repository concurrently; see "NOTES" below. --prune is on by
	default.

--no-prune::
	Do not prune any loose objects.

--quiet::
	Suppress all progress reports.

--force::
	Force `git gc` to run even if there may be another `git gc`
	instance running on this repository.

--keep-largest-pack::
	All packs except the largest non-cruft pack, any packs marked
	with a `.keep` file, and any cruft pack(s) are consolidated into
	a single pack. When this option is used, `gc.bigPackThreshold`
	is ignored.

AGGRESSIVE
----------

When the `--aggressive` option is supplied, linkgit:git-repack[1] will
be invoked with the `-f` flag, which in turn will pass
`--no-reuse-delta` to linkgit:git-pack-objects[1]. This will throw
away any existing deltas and re-compute them, at the expense of
spending much more time on the repacking.

The effects of this are mostly persistent, e.g. when packs and loose
objects are coalesced into one another pack the existing deltas in
that pack might get re-used, but there are also various cases where we
might pick a sub-optimal delta from a newer pack instead.

Furthermore, supplying `--aggressive` will tweak the `--depth` and
`--window` options passed to linkgit:git-repack[1]. See the
`gc.aggressiveDepth` and `gc.aggressiveWindow` settings below. By
using a larger window size we're more likely to find more optimal
deltas.

It's probably not worth it to

Title: Git GC Options and Aggressive Mode
Summary
The git-gc command has various options to customize its behavior, including limiting cruft pack size, expiring objects to a directory, pruning loose objects, and suppressing progress reports. The --aggressive option enables a more thorough optimization of the repository, which can be time-consuming but provides more optimal delta compression.