Por Anónimo (no verificado) , 29 Abril 2026

Por qué maintenance, no gc

git maintenance (Git 2.31+) es el reemplazo moderno orientado a tareas para gc --auto. Ejecuta tareas específicas (commit-graph, prefetch, incremental-repack, loose-objects, pack-refs, gc) en horarios afinados para cada una, en background, sin bloquear tus comandos interactivos.

Iniciar

git maintenance start
git maintenance start --scheduler=systemd
git maintenance start --scheduler=launchctl
git maintenance start --scheduler=schtasks

Inspeccionar y detener

git maintenance status
git maintenance stop
git maintenance unregister

Tareas y horarios

TareaHorario predeterminadoQué hace
commit-graphcada horaActualiza el commit-graph
prefetchcada horaHace fetch a refs ocultas
loose-objectsdiarioEmpaqueta objetos sueltos
incremental-repackdiarioRepack geométrico + MIDX
pack-refssemanalEmpaqueta refs sueltas
gcoff por defectogc completo; prefiere los otros

Ejecuciones manuales

git maintenance run --task=commit-graph
git maintenance run --task=incremental-repack
git maintenance run --auto

Config por tarea

[maintenance]
auto = false
strategy = incremental
[maintenance "commit-graph"]
enabled = true
[maintenance "incremental-repack"]
enabled = true
auto = 100
[maintenance "loose-objects"]
enabled = true
batchSize = 50

Deshabilitar auto-gc

git config gc.auto 0

Errores comunes

Olvidar git maintenance start tras clonar un repo grande.

Logs

En systemd: journalctl --user -u git-maintenance.service. En macOS: ~/Library/Logs/git-maintenance.log.