Repo corrupto de Git: cómo elegir un object de git de un repository limpio

Esta es una de las numerosas preguntas sobre un repository de Git que está dañado, precisamente un object suelto que salió mal:

$ git gc Counting objects: 3299, done. error: inflate: data stream error (unknown compression method) error: unable to unpack 831a5d31af4a0af2f5a367689bee27a44efc22c9 header Delta compression using up to 6 threads. Compressing objects: 100% (3283/3283), done. error: inflate: data stream error (unknown compression method) fatal: loose object 831a5d31af4a0af2f5a367689bee27a44efc22c9 (stonetworking in .git/objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9) is corrupt error: failed to run repack 

Siguiendo las respuestas existentes sobre el tema ( ¿Cómo trato con los files de objects git corruptos?, ¿Cómo reparar el repository git dañado? O ¿Qué puedo hacer con la corrupción de Git debido a un object faltante? ) Ya 831a5d31 el object 831a5d31 de los corruptos repository.

En mi caso, tengo un clon del repository, que parece contener el object que me falta, pero no hay ningún file en los objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9 . ¿Cómo puedo hacer para arreglar mi repository?

Si el file existe en otra parte

El object del repository limpio se ha reempaquetado, es por eso que ya no existe como un file.

Para restaurarlo, primero guárdelo como un file, desde el repository limpio, con

 git show 831a5d31af4a0af2f5a367689bee27a44efc22c9 > 831a5-file 

Mueva 831a5-file en el repository dañado y ejecútelo

 git hash-object -w 831a5-file 

Asegúrese de que el SHA1 dado en la salida sea 831a5d31af4a0af2f5a367689bee27a44efc22c9

¡Esto almacenará el object y el repository será reparado!

Si el file no existe en otra parte

Si el file no existe en otro lugar, es decir, la corrupción se produjo después de la confirmación, pero antes de que pudiera presionar, hay una forma de restaurar su repository y volver a comprometer los cambios. Vea esta respuesta a una pregunta relacionada.

    Intereting Posts