Obteniendo un error de corrupción al ejecutar un `git push`

Intenté ejecutar git push y obtuve un error de corrupción:

 % git push Counting objects: 62, done. Delta compression using up to 2 threads. error: corrupt loose object 'f2310668fe335b36c513e50fcd99744e8fd5c2e0' fatal: object f2310668fe335b36c513e50fcd99744e8fd5c2e0 is corrupted error: pack-objects died with strange error 

Esto se cuelga en la última línea hasta que presiono Ctrl+C

Leí que ejecutar git gc podría ser útil, así que lo hice y obtuve un error similar:

 % git gc Counting objects: 493, done. Delta compression using up to 2 threads. error: corrupt loose object 'f2310668fe335b36c513e50fcd99744e8fd5c2e0' fatal: object f2310668fe335b36c513e50fcd99744e8fd5c2e0 is corrupted error: failed to run repack 

¿Qué debo hacer para arreglar esto?

Clona una copy de security de tu repository. Si el id del object dañado es $ OBJECTID, haz esto:

En nuevo repository:

 git cat-file -t $OBJECTID > object-type git cat-file $(cat object-type) $OBJECTID > object-contents 

Mueva esos dos files nuevos al antiguo repository

En el repository corrupto, aleja tu object corrupto:

 mv .git/objects/XX/XXXXXXXXXXXXXXXXXX . git hash-object -t $(cat object-type) -w object-contents 

Esto debería escribir el object en la database de git, y enviar $ OBJECTID a STDOUT. Si emite alguna otra identificación SHA1, ha cometido un error y debe eliminar ese object equivocado.

parece que es uno de sus objects recientes que está tratando de insert que contiene un object dañado. Hacer

 git fetch 

luego rebase sus cambios en la parte superior de la twig de seguimiento remoto. Si estás en una situación de avance rápido, esto no debería hacer nada

 git rebase origin/yourbranch 

si no se trata de una situación ff, debería recibir un error en la confirmación que, o bien está corrupto, o bien algo a lo que apunta en la estructura de tree y blob a la que apunta.

Si esta era una situación ff, haz una

 git rebase -i origin/yourbranch 

no cambies nada Guarde y salga y git reescribirá las confirmaciones en la parte superior de donde se encuentran. Esto debería fallar, no una confirmación que te ayudará a rastrear el object malo.

espero que esto ayude

Puede tratar de volver a clonar su repository de una fuente externa y luego search los cambios de su propia versión modificada. Esto funciona si el object defectuoso no es creado por uno de sus propios commits.

 git clone http://foo/bar cd bar git fetch ../orig [branch1:branch1 [branch2:branch2[...]]] 

También puede intentar extraer el object f2310668fe335b36c513e50fcd99744e8fd5c2e0 del clon nuevo y colocarlo en .git/objects/f2/310668fe335b36c513e50fcd99744e8fd5c2e0 y ejecutar git gc nuevamente, pero haga esto con una copy de su repository.

    Intereting Posts