2012-08-31 112 views
5

Así que esta es la quinta vez que esto ha sucedido en las últimas tres semanas y estoy realmente desconcertado en cuanto a por qué esto sigue sucediendo. Este es el mensaje exacto que tengo cuando hago 'git status'error: el archivo objeto está vacío .git/objects /../ .. está vacío - fatal: objeto suelto ... está dañado

error: object file .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33 is empty 
fatal: loose object 48088f00d90b0d27de65336bb9ed9a75b0cfed33 (stored in .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33) is corrupt 

He intentado recomendaciones como eliminar el objeto dañado, pero luego el mismo error aparece con otro objeto suelto. Cada vez que hago esto, terminan siendo alrededor de 30 objetos sueltos que tengo que eliminar y luego todavía me da un error después de que todos los objetos corruptos se han ido.

Por quinta vez que esto sucedió, algo tiene que estar mal con git o algo relacionado con él. He intentado reinstalar git, pero aún así terminé con los objetos corruptos. Estoy usando una máquina virtual con Ubuntu, si eso fuera a causar algo como esto, no lo sé. También he intentado cambiar a Linux mint y también he contrarrestado este problema.

Al final siempre acabo de guardar los cambios en un archivo de texto, eliminé mi repositorio, extraje el repositorio nuevo de git hub y luego edito los cambios nuevamente. Eso funciona pero lleva mucho tiempo y está lejos de ser ideal. No necesariamente estoy buscando una forma de solucionar esto, sino más bien lo que está causando y cómo evitar que vuelva a suceder.

+0

¿Qué sistema (s) de archivos está utilizando? ¿El repositorio está en la unidad virtual de la máquina virtual o se accede a través de NFS/CFS o una instalación de loopback mount o ext2/ext3/jfs/reiserfs/xfs/... directa de un dispositivo local en el host o un disco SAN? ¿Está el sistema de archivos en cuestión lleno, o lo suficientemente cerca de él, que podría estar lleno durante ciertas operaciones? Cualquier disco/sistema de archivos de errores en sus mensajes/archivos syslog? – twalberg

+0

Estoy usando un disco duro virtual que está formateado para ext4 en el cual se almacena el repositorio. La capacidad del vhd es de 100 GB y solo tengo 20 GB, así que no estoy cerca de estar lleno. Sin errores del sistema de archivos ... –

+0

Consulte esta excelente respuesta, http://stackoverflow.com/a/12371337/23118, para más o menos el mismo problema. – hlovdal

Respuesta

0

Esto normalmente no debería suceder, ya que primero escribe el contenido del archivo en un archivo temporal y luego cambia el nombre del archivo a su ubicación final. En la práctica, vi archivos de objetos Git vacíos debido a un sistema de archivos roto (el vboxsf de VirtualBox, usado para compartir carpetas, parece ser el culpable cada vez que veía gente quejándose de archivos vacíos como este).

Configuración core.fsyncobjectfiles a true puede ayudar.