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.