trucos tag remota rama que hace conectar con commits commands comentarios cambiar git git-pull git-fetch

tag - Error de extracción de GIT: el objeto remoto está dañado



github tags (7)

Acabo de recibir este error y pasé medio día haciendo todas las cosas descritas en el post: fsck, repack, gc, configurando las opciones de memoria.

También siguió esta publicación: http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD

Pero al final, fue tan simple como encontrar el objeto dañado (21f3981dd35fccd28febabd96f27241eea856c50 en este caso) en el repositorio simple y reemplazarlo con la versión no dañada (que se puede encontrar en la carpeta .git de cualquiera de los repositorios locales que extrajo). / clonado desde el repositorio desnudo.)

$ git pull remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted error: git upload-pack: git-pack-objects died with error. fatal: git upload-pack: aborting due to possible repository corruption on the remote side. remote: aborting due to possible repository corruption on the remote side. fatal: protocol error: bad pack header

¿Alguna idea de por qué esto está fallando?
Cuando ejecuto git --bare fsck-objects --full solo veo enlaces colgantes pero no enlaces rotos. También git gc no ayudó de ninguna manera. Cuando vuelvo a clonar o extraigo otro clon, no veo este error.


Agregar git config --global pack.window "0" funcionó para mí ... junto con lo siguiente

git config --global pack.windowMemory "100m" git config --global pack.packSizeLimit "100m" git config --global pack.threads "1"

Razón:

El clon de Git comprime los datos al clonar el repositorio

Comprime los datos en la memoria del servidor antes de recibir los datos / archivos.

Si el servidor no tiene memoria, obtendrá el error anterior al empaquetar los objetos

Puede solucionar el problema haciendo que git clone el repositorio sin empaquetar los objetos en el servidor con lo siguiente.

git config --global pack.window "0"



En el cliente, intente hacerlo así:

git config --global pack.windowMemory "100m" git config --global pack.SizeLimit "100m" git config --global pack.threads "1" git config --global pack.window "0"

o en el servidor git, intente esto: modifique: /home/git/repositories/***.git/config , agregue a continuación:

[pack] window = 0



Para mí esto fue porque mi servidor remoto que aloja el repositorio de git tenía un objeto / archivo dañado. Cuando intenté volver a empacar, se estaba quedando sin memoria. Actualicé mi memoria de instancia y luego ssh-ed de nuevo y corrí

git gc

Aquí está el enlace a la documentación:

https://git-scm.com/book/uz/v2/Git-Internals-Packfiles


Parece que la respuesta está en los comentarios: git fsck