git count-objects para coding agents: disco, no housekeeping
Resumen
git count-objects cuenta objetos sueltos y su disco. Diagnóstico con -v. Cero git-repack. Cero prune-packed. No es gc ni fsck. Git 2.50.1.

Qué resuelve
Esta pieza se queda en la decisión práctica: qué instalar, qué riesgo agrega y cómo aplicarlo sin romper operación.
git count-objects cuenta objetos sueltos y el disco que ocupan. El man (git-count-objects(1); git-scm.com/docs/git-count-objects HTTP 200, last-modified 2026-08-31; last updated in 2.51.1, 2025-10-15; 2.51.2 → 2.55.0 sin cambios; pie del man local Git 2.50.1.428.g0e8243, 2025-07-22; binario Git 2.50.1 / Apple Git-155): Count unpacked number of objects and their disk consumption. SYNOPSIS: git count-objects [-v] [-H | --human-readable].
No es gc. gc es porcelain: empaqueta, recorta reflog y ya llama prune con gracia. count-objects no escribe. El man lo dice al inicio: to help you decide when it is a good time to repack. Decidir no es correr git-repack.
Tampoco es fsck. fsck recorre alcanzabilidad y puede listar dangling. count-objects no valida hashes. No toca el índice ni HEAD.
Contrato: git count-objects -v. Cero git-repack. Cero prune-packed. Cero -v volcado a un log eterno. Housekeeping = gc --auto --quiet.
Qué hace (y qué no)
Sin flags imprime una línea: N objects, M kilobytes. Eso es solo sueltos (unpacked). No lista packs. No lista garbage.
-v / --verbose añade claves. El man las nombra así:
count: número de objetos sueltossize: disco de sueltos, en KiB (salvo-H)in-pack: objetos ya en packssize-pack: disco de packs, en KiB (salvo-H)prune-packable: sueltos que también están en un pack. These objects could be pruned using git prune-packed.garbage: archivos en el object database que no son ni suelto válido ni pack válidosize-garbage: disco de ese garbage, en KiB (salvo-H)alternate: path absoluto de object databases alternos; puede repetirse
El binario 2.50.1 también imprime packs: (número de archivos pack). El man web no lo lista como campo propio; no lo trates como API estable. Si aparece, léelo. Si no, no lo inventes.
-H / --human-readable: Print sizes in human readable format. Cambia size, size-pack y size-garbage. No cambia count ni in-pack.
count-objects no borra. prune-packable es un número, no una orden. Un agente no encadena git prune-packed porque vio un entero. Tampoco encadena git-repack porque el man dijo “when it is a good time”.
Verificado 2026-09-06 (Git 2.50.1 / Apple Git-155). Worktree propio, working tree limpio:
git count-objects: 0. Una líneaN objects, M kilobytes.rev-parse HEADigual.status -sbsin cambios en tracked.git count-objects -v: 0. Clavescount/size/in-pack/size-pack/prune-packable/garbage/size-garbage. Puede imprimirwarning: garbage found:si hay basura en el object database del worktree. HEAD igual.git count-objects -H: 0. Misma línea, tamaño en MiB/KiB.git count-objects -v -H: 0. Tamaños human-readable. HEAD igual.--foo: 129, *unknown optionfoo'*. SYNOPSIS: solo-vy-H`.- Fuera de un repo: 128, not a git repository.

Lo que el agente sí / no corre
| Quiero | Comando | Trampa |
|---|---|---|
| ¿Cuántos sueltos hay? | git count-objects -v | du -sh .git y adivinar |
| Tamaños legibles | git count-objects -v -H | parsear kilobytes a mano |
| Housekeeping | gc --auto --quiet | git-repack porque el man lo mencionó |
| ¿Hay objetos rotos? | fsck | tratar garbage: como fsck |
| Sueltos inalcanzables | prune -n | prune-packed porque prune-packable > 0 |
Prohibido en autónomo:
git-repack/git pack-objects. count-objects informa. No reescribe packs.git prune-packedporqueprune-packableno es cero. Ese comando borra sueltos ya empaquetados. No es el default de un agente.- Encadenar prune a pelo. prune borra. count-objects no.
- Tratar
garbage:como licencia pararmdentro de.git/objects. Reporta el número y para. -va un log que el LLM relee entero. Cierre = las claves, no un dump.- Correrlo en el worktree del humano o en
main. Solo worktree propio. - Confundirlo con gc.
gc.autodefault 6700 sueltos. count-objects te dacount. gc--autodecide si trabaja. - Confundirlo con fsck. fsck valida. count-objects cuenta.
- Usar
dusobre.gitcomo sustituto. Mezcla worktrees, hooks y logs. El man mide el object database.
Receta (60 segundos)
Solo en un worktree propio, y solo si el disco o un comando ya habló de packs/sueltos:
git status -sb
git count-objects -v
echo $?
git rev-parse HEAD
0ycountbajo el umbral degc.auto(default 6700): no hay trabajo. Reporta las claves y para.0ycountalto, osize-packdisparado: no corrasgit-repack. Si el disco lo pide, gc --auto --quiet.0ygarbage> 0: reporta el entero. Cerormen.git. Ceroprune-packed.128: no hay repo. No reintentes con-H.129: opción desconocida. No añadas flags de prune.
Cierre = las claves. Cero commit. Cero push a main. Cero “ahora repack”.

count-objects vs gc vs prune vs fsck
gc es housekeeping: --auto --quiet. Cero --aggressive. Cero --prune=now. El man de count-objects no manda a gc por nombre; manda a decidir. La decisión del agente es gc --auto, no git-repack.
prune borra sueltos inalcanzables. Diagnóstico con -n. Cero a pelo. Cero --expire=now. prune-packable no es una orden de prune.
fsck diagnostica integridad. dangling no es error. count-objects no recorre grafos.
FAQ
¿count alto significa que debo borrar? No. count son sueltos. El default de gc.auto es 6700. Por debajo, gc --auto sale sin trabajar. Un agente no adelanta el umbral.
¿prune-packable > 0 autoriza git prune-packed? No. El man describe could be pruned. Could no es must. Housekeeping = gc --auto --quiet.
¿garbage es un objeto corrupto? No necesariamente. Es un archivo en el object database que no es suelto válido ni pack válido. En un worktree de Git a veces aparece un warning: garbage found: apuntando a refs del worktree. Reporta el entero. No abras .git con rm.
¿Puedo parsear solo la línea corta? Sí, si solo necesitas sueltos. La línea sin -v es N objects, M kilobytes. Si el disco o los packs importan, usa -v. -H solo cambia el formato de tamaños.
El curso instalar un agente cubre el loop local. Hub: comparativas y decisiones. count-objects no es gc: plumbing que cuenta sueltos y packs, no housekeeping.
Lecturas relacionadas
Sigue explorando Coding Agents y otras piezas para builders.

git verify-commit para coding agents: firma válida no es firma confiable

git prune para coding agents: plumbing, no housekeeping

git fsck para coding agents: integridad, no housekeeping
