Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Git fatal: bad object? Demuestra el ref, el objeto y el límite del repositorio antes de borrar

Conserva el trabajo local, resuelve el ref exacto, prueba el objeto, clasifica el historial shallow o parcial y repara solo la capa que la evidencia demuestra rota.

Diagrama original desde la resolución del ref hasta la prueba del objeto y su alcanzabilidad.
Ilustración original: demuestra la capa rota antes de elegir una reparación. Watch at Ease

`fatal: bad object` no identifica una sola reparación. Git puede resolver un nombre hacia un objeto ausente, encontrar un ref inválido, cruzar un límite shallow o parcial intencional, abrir otro repositorio o detectar daño real.

Conserva el árbol de trabajo y los metadatos antes de cambiar nada. Después demuestra el ref exacto, el ID, el tipo de objeto y el límite de alcanzabilidad. Una reparación segura cambia la capa mínima probada y conserva una vía de recuperación.

Conserva el trabajo antes de ejecutar reparaciones

Copia el árbol y los metadatos antes de checkout, reset, gc, prune, repack o borrar refs. Registra status, raíz, directorio Git, remotos, worktrees y todos los refs; elimina credenciales pero conserva nombres e IDs.

En repositorios grandes conserva al menos archivos sin commit, HEAD, refs, reflogs, shallow, alternates y configuración partial. Usa un clone nuevo para comparar, no para reemplazar antes de revisar trabajo local.

Resuelve el nombre exacto y prueba el objeto exacto

Usa literalmente el valor tras bad object. Si es un ref, verifícalo con show-ref, for-each-ref y rev-parse; prueba el ID con cat-file -e y su tipo con cat-file -t. Registra qué parte falla.

Demuestra también qué repositorio y worktree usó el proceso. Editores, hooks, servicios y CI pueden ejecutar con otro directorio o GIT_DIR; reproduce el entorno original.

Interpreta fsck sin llamar pérdida a cada línea

Ejecuta git fsck --full sobre la copia. Un objeto missing, puntero inválido, hash mismatch o archivo corrupto requiere acción. dangling significa que el objeto existe pero no es alcanzable desde refs normales y puede ayudar a recuperar.

Relaciona el primer error útil con el ref o enlace padre exacto. Si solo un ref local prescindible apunta a un objeto ausente, un update-ref -d dirigido puede ser adecuado; nunca lo amplíes a un borrado masivo.

Separa límites intencionales de datos ausentes

Comprueba .git/shallow, profundidad de CI, filtros partial, remotos promisor, alternates y submódulos. Una raíz shallow es intencional; actions/checkout obtiene un commit por defecto.

Solo después de confirmar remoto e historial, profundiza o trae el ref exacto. fetch-depth: 0 pide el historial completo, aunque una profundidad menor o fetch dirigido puede bastar.

Elige la reparación mínima y demuestra el cierre

Reorienta un ref simbólico o remoto obsoleto hacia una rama verificada o borra solo ese ref probado. Profundiza clones delgados; recupera objetos alcanzables realmente ausentes desde un clone fiable, copia o almacén alternativo.

Repite el comando original y vuelve a comprobar ref, objeto y fsck. Confirma el trabajo local y conserva la copia dañada hasta que un clone nuevo o backup pruebe una ruta de recuperación independiente.

Diagrama original que separa refs obsoletos, objetos válidos, historial shallow y objetos ausentes.
Ilustración original: conserva evidencia, clasifica el límite y aplica la reparación mínima. Watch at Ease