GIT-GC(1) Git Manual GIT-GC(1) (NAME) git-gc - (SYNOPSIS) git gc [--aggressive] [--auto] [--[no-]detach] [--quiet] [--prune= | --no-prune] [--force] [--keep-largest-pack] (DESCRIPTION) (housekeeping) ( ) git add (refs) reflog rerere (working trees) . (commit-graph) . ( ) git gc . gc.auto . git gc (mass-import). <> git-fast-import(1) . (OPTIONS) --aggressive git gc . git gc . . << (AGGRESSIVE)>> . --auto git gc . (heuristic) gc.auto << (CONFIGURATION)>> . gc.auto gc.autoPackLimit ( rerere reflog ) . --detach, --no-detach . gc.autoDetach . --cruft, --no-cruft (cruft pack) . --cruft . --max-cruft-size= (cruft pack) cruft . gc.maxCruftSize . --max-cruft-size git- repack(1) . --expire-to= cruft pack ( ) . --cruft . --expire-to git-repack(1) . --prune= ( gc.pruneExpire ). --prune=now << (NOTES)>> . --prune . --no-prune . --quiet ( ). --force git gc git gc . --keep-largest-pack (non-cruft) .keep cruft . gc.bigPackThreshold . (AGGRESSIVE) --aggressive git-repack(1) -f --no-reuse-delta git- pack-objects(1) . . . --aggressive --depth --window git-repack(1) . gc.aggressiveDepth gc.aggressiveWindow . . . . (trade-off) . (CONFIGURATION) git-config(1) . : gc.aggressiveDepth git gc --aggressive. --depth --aggressive . --depth git-repack(1) . gc.aggressiveWindow git gc --aggressive . --window . --window git-repack(1) . gc.auto git gc --auto . Porcelain (garbage collection) . . git gc --auto ( gc.autoPackLimit) . gc.autoPackLimit *.keep git gc --auto . . . gc.auto . gc.bigPackThreshold . . gc.autoDetach git gc --auto . true . maintenance.autoDetach . gc.bigPackThreshold git gc (non-cruft) . --keep-largest-pack . . k m g . gc.autoPackLimit . gc.autoPackLimit gc.bigPackThreshold . git repack gc.bigPackThreshold ( git gc --keep-largest-pack ). gc.writeCommitGraph true git- gc(1) commit-graph . git gc --auto . true . git-commit-graph(1) . gc.logExpiry gc.log git gc --auto gc.logExpiry . "1.day" . gc.pruneExpire . gc.packRefs git pack-refs ... HTTP . git gc git pack-refs . notbare bare . true . gc.cruftPacks (cruft pack - git-repack(1)) . true . gc.maxCruftSize (cruft) . --max-cruft-size . --max-cruft-size git-repack(1) . gc.pruneExpire git gc prune --expire 2.weeks.ago ( cruft gc.cruftPacks --cruft repack --cruft --cruft-expiration 2.weeks.ago) . . "now" "never" . git gc << (NOTES)>> git-gc(1) . gc.worktreePruneExpire git gc git worktree prune --expire 3.months.ago . . "now" $GIT_DIR/worktrees "never" . gc.reflogExpire, gc..reflogExpire git reflog expire reflog . "now" "never" . "" ( "refs/stash") . gc.reflogExpireUnreachable, gc..reflogExpireUnreachable git reflog expire reflog . "now" "never" . "" ( "refs/stash") . git commit --amend git rebase amend rebase . gc.reflogExpire . gc.recentObjectsHook ( cruft pack ) (shell) () . (object IDs) "recent" () . (mtime) "" ( ) . . . (hook) ( ) . gc.repackFilter . --filter= git-repack(1) . gc.repackFilterTo ( gc.repackFilter ) . : ( alternates) . --filter-to= git- repack(1) objects/info/alternates gitrepository-layout(5) . gc.rerereResolved git rerere gc . "1.month.ago" . . git- rerere(1) . gc.rerereUnresolved git rerere gc . "1.month.ago" . . git- rerere(1) . (NOTES) git gc . (index) (remote-tracking branches) reflogs ( ) refs/* . ( git notes) . . git gc . . : 1. (mtime) --prune . 2. . ( ) . (HOOKS) git gc --auto (hook) pre-auto-gc . githooks(5) . (SEE ALSO) git-prune(1) git-reflog(1) git-repack(1) git-rerere(1) (GIT) git(1) Git 2.55.0 2026-06-29 GIT-GC(1)