2011-10-06 54 views
10

Después de un restablecimiento completo de mi ordenador portátil que congela después de un git commit, tengo el error siguiente cuando entro en cualquier comando en mi repositorio git:¿Cómo restaurar un repositorio de git corrupto?

$ git status 
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument 

¿Hay alguna forma de recuperar mi repositorio git?

No he encontrado una solución a partir de las dos preguntas siguientes:

EDIT: No he encontrado la causa de la corrupción de mi repositorio git ni ninguna solución para restaurarlo ... ¡finalmente comencé un nuevo clon de mi repositorio SVN!

+2

El primer paso aquí es verificar sus sistemas de archivos. Ese error es extraño. ¿Has 'fsck' o lo que sea que tu sistema operativo tenga para eso? Y haga un ** BACKUP ** antes de hacer cualquier otra cosa. – Mat

+0

Casi todas las respuestas asumen que uno puede simplemente volver a clonar desde un origen remoto no corrompible. Aquí está el problema ... ¿Qué pasa si ** eres ** el origen, y estás corrupto? Derecha. Entonces, aquí: 'git-repair' es un programa que ejecutará' git fsck' e intentará solucionar cualquier problema que encuentre. https://git-repair.branchable.com/ Parece bastante capaz, y aunque podría terminar teniendo que copiar (¡si puede!) objetos de una copia de seguridad (tiene una copia de seguridad, ¿no?), debería ahorrarle una gran cantidad de tiempo al rescatar todo lo que pueda y dejándole el trabajo real, no muchas tareas automatizables. Sin afiliación, etc. –

Respuesta

2

Para mí, ninguna de las respuestas anteriores funcionó. Acabo de volver a clonar mi repo de git y todo estaba bien. Antes de la clonación, abrí todos los archivos que se cambiaron y simplemente los sobrescribí después de la extracción.

Es por eso que debe comprometerse a menudo :).

1

¿Ha empujado su repositorio a algún lugar como github o bitbucket recientemente? Puede obtener otro clon y copiar el directorio de objetos.

lo contrario:

ver cuántos de éstos plazo:

git fsck 
git branch -a 
git branch -a | xargs -n 1 git log -1 
git reflog 

Con la reflog, ver cuál de los que puede hacer un registro de éxito. con suerte, es solo su último compromiso corrupto o uno de sus árboles.

Espero que esto ayude

+1

Claro que podría comenzar con un nuevo clon, con suerte no estoy muy lejos de mi troncal svn (mi repositorio local es un clon git-svn). Pero me preguntaba si este tipo de problema se puede recuperar y cuál fue el origen para evitar reproducirlo en el futuro. – greydet

Cuestiones relacionadas