2011-10-04 88 views
6

Tengo un objeto git que está dañado. El tamaño del archivo es 0 en el directorio de objetos git.Cómo recuperarse de un archivo perdido corrupto en git

Primero un fsck:

git fsck --full 
fatal: loose object a35c1489005cca1ffeb3c2d3e4d63988408b6a24 (stored in .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24) is corrupted 

Entonces un ls:

ls -l .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 
----------+ 1 sampath ???????? 0 Sep 13 15:26 .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 

Ese archivo no existe en el disco !?

# git cat-file -t a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
error: unable to find a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
fatal: git cat-file a35c1489005cca1ffeb3c2d3e4d63988408b6a24: bad file 

Vi este error primero cuando traté de tirar.
Intenté eliminar el archivo y hacer un pull, pero eso no funcionó. Se quejó de que el archivo no se encuentra.

Cuando quité el archivo y corriendo fsck, que me mostró una gran cantidad de objetos sueltos

# git fsck --full 
broken link from commit 1e5980c224ff19b19ad99dbefed4c7c64c58aee6 
       to tree a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
dangling tree 0401d636a512b208dffd6ac6e153ab0a061f8d5d 
dangling blob 58014c0266784a1e3cc1502de82837c5f36c8514 
dangling tree 0507fa56260c693cea678eab0343240c5bba06ad 
dangling tree 130770880c664a0b0cf5a21d037cbdba7480dc90 

me cansado de ir hacia atrás unos compromete y no sirvió de nada.
¿Alguna sugerencia sobre cómo recuperarse de esto?

+1

¿Tiene una copia del repositorio en alguna parte? Si lo hace, enganche el objeto desde allí. Ya que lo estabas sacando de algún lado, con suerte tienes ese objeto en ese repo – Andy

+0

¿Ayudaría http://stackoverflow.com/questions/801577/how-to-recover-git-objects-damaged-by-hard-disk-failure ayudar ? (Si tiene copias de seguridad de ese repositorio, por supuesto) – VonC

+0

Intenté esto. Cloné el repositorio y desempaqué los objetos. Pero no pude encontrar el archivo de objeto suelto que tenía 0 tamaño. ¿Esto significa que pertenece a uno de mis compromisos locales que aún no se han enviado a remoto? –

Respuesta

1

Parece que un árbol está dañado. Si conoce su estructura en torno a esas confirmaciones, podría adivinar de qué se trata. Con suerte, puede deducir qué archivos se agregaron o eliminaron. Tus manchas y otros árboles también estarán colgando. Si realmente desea recuperarse de esto y no tiene otros clones del repositorio, aún es posible, pero implicará tiempo, esfuerzo y suerte.

Espero que esto ayude.

Cuestiones relacionadas