Tecnología · GUÍA PRÁCTICA
¿Git informa pack corrupto o falla index-pack? Demuestre primero dónde se perdieron los bytes
Separe base de objetos local dañada, transferencia truncada y productor remoto antes de mover packs, volver a clonar o ejecutar gc.

Pack checksum mismatch e invalid index-pack output no señalan al mismo dueño. El segundo puede ser el último síntoma de una transferencia truncada o un productor remoto fallido.
No empiece borrando packs, clonando sobre el único worktree ni ejecutando gc. Conserve primer error y base de objetos, demuestre el límite, recupere de una fuente fiable y cierre con objetos, refs, trabajo y transferencia repetible.
Conserve el primer fallo y congele mutaciones
Guarde comando, versión Git, ruta, stderr, estado, transporte, remote sin credenciales y primera línea checksum, CRC, bad offset, early EOF o index-pack. Detenga gc, repack, prune, fetch, mirror y backup automáticos.
Haga copia de filesystem y conserve aparte cambios no confirmados e index. Registre nombre, tamaño y hash de cada .pack/.idx implicado antes de mover o regenerar.
Decida si falla local, tránsito o remoto
Checksum/CRC de un pack almacenado apunta a la base local; early EOF/index-pack de clone también puede ser truncado, disco cliente, proxy/SSH o pack-objects remoto.
Compare cliente sano, destino vacío y transporte alternativo aprobado. Un clone viejo, todos los clones de un repo o todos los repos de un cliente dan evidencias distintas.
Mapee pack, index, objetos y refs
Ejecute git fsck --full en la copia y git verify-pack sobre el par exacto. Reconstruir index con index-pack no prueba que todas las refs necesarias sean alcanzables.
Separe checksum de pack, checksum/CRC de index, bad object offset, objeto referenciado ausente y dangling; registre refs/commits dependientes.
Recupere lo mínimo desde fuente fiable
Si el clone local es descartable y remote está verificado, clone en otro directorio, conserve cambios y compare commit IDs. Para servidor dañado use backup o clone verificado.
Restaure solo objetos o pack material exacto. salvage y unpack-objects van en una copia; no permiten borrar evidencia ni ejecutar gc/prune sobre datos incompletos.
Cierre con integridad, refs, trabajo y repetición
Ejecute fsck completo y compare branches, tags y commit IDs; confirme cambios locales y objetos críticos. Checkout de una rama no prueba todo.
Repita clone/fetch original en destino vacío. Cierre solo con integridad limpia, refs iguales, trabajo contabilizado y transferencia sin truncado.
