Solucionar el error fatal de los “primeros EOF” de clones de Git

El comando git clone “, como sugiere su nombre, le permite duplicar un repositorio completo de remoto a local, o viceversa. Aunque es un comando git bastante simple y directo, a veces, aún pueden surgir problemas.

A principios de esta semana, recibí un error al ejecutar git clone , y el error se parece a lo siguiente:

1
2
3
4
5
error: pack-objects died of signal 9.20 MiB | 79.00 KiB/s     
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: early EOFs:   1% (66/3818), 6.04 MiB | 53.00 KiB/s

Después de investigar y depurar, estas son las dos causas principales del error fatal.

1. Conexión lenta a Internet

Causa del error

El repositorio es enorme y la conexión a Internet es demasiado lenta.

Esto vino de mi experiencia personal: estaba intentando clonar un repositorio de aproximadamente 1,5 Gb. Siguió fallando de manera inconsistente a una tasa diferente de% de descarga, a veces después de 20 Mb, a veces después de 60 Mb, 200 Mb, etc.

Solución

El cambio a una conexión a Internet más rápida y estable ayuda. Con una conexión más rápida, pude acercarme a 1,5 Gb. En un momento dado, puedo clonar sin ningún error.

2. Gran repositorio

Causa del error

El repositorio que está intentando clonar es grande, en términos de tamaño de archivo. Al intentar clonarlo, el servidor remoto simplemente no tiene suficiente memoria para hacer frente a la ejecución.

Solución

Giro de compresión. Clon de Git parcialmente. Cuando tenga éxito, clone el resto.

  1. Primero, desactive la compresión Git.

    1
    git config --global core.compression 0
  2. Luego haga un clon parcial del repositorio con --depth 1parámetro. Reemplazar username@domain.com/path/to/git_repo/con la ruta real al repositorio.

    1
    git clone —depth 1 ssh://username@domain.com/path/to/git_repo/
  3. A continuación, recupere el resto del repositorio.

    1
    git fetch --unshallow
  4. Finalmente, termínelo con un tirón regular.

    1
    git fetch --unshallow

Estos métodos resolvieron mi problema. ¡Espero eso ayude!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *