Git, fatal: el extremo remoto colgó inesperadamente

278

Cuando traté de correr

git push origin master --force

Acabo de tener

Counting objects: 2649, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

¿Tiene algo que ver con no ser seguro? Intenté crear una clave pública como en la respuesta para Fatal: el extremo remoto colgó inesperadamente y lo ejecutó nuevamente, pero aún no funciona. ¿No estoy realmente usando la llave? Si es así, ¿cómo lo uso?

DanielLC
fuente
muestre la salida degit remote -v
CharlesB
1
posible duplicado de Git falla al presionar commit a github
CharlesB
13
git config http.postBuffer 524288000 # funciona para mí
Hari Das
si obtiene error: could not lock config file .git/config: No such file or directoryver stackoverflow.com/a/32329453/827525
niksmac
1
No pude obtener ninguna de las soluciones sugeridas para trabajar. Entonces probé GitKraken. Es uno de los pocos programas de Git que no usa git.exe. GitKraken podría hacerlo. Después de que GitKraken empujó el repositorio, pude volver a git.exe y sincronizar sin ningún problema.
lars pehrsson

Respuestas:

83

Esto se parece a ¿Cómo hago que github sea predeterminado a ssh y no https para nuevos repositorios ? Probablemente valga la pena intentar cambiar del protocolo http a ssh:

$ git remote add origin [email protected]:username/project.git
Vitalliuss
fuente
¿Por qué no puedo cambiar de http a https?
DanielLC
10
bash-3.2 $ git remoto agregar origen [email protected]: xxx / xx.git fatal: el origen remoto ya existe. POR QUÉ ?
almaruf
11
@almaruf es porque el control remoto originya está allí y está tratando de reemplazarlo. Git no permite eso. Así que primero debes hacer y git remote rm originluego intentar de nuevo. Funcionaría
Alfie
asegúrese de que arranque el proyecto si se trata de un nuevo clon fresco congit init
Raul
puede usar el protocolo git sobre ssh (que requiere claves ssh) o el protocolo https que requiere nombre de usuario y contraseña a través de un token de acceso personal - Prefiero el posterior
Raul
521

El problema se debe a la configuración del búfer git / https. Para resolverlo (tomado de Git falla al presionar commit en github )

git config http.postBuffer 524288000

Y ejecuta el comando nuevamente

Romana m
fuente
44
Necesito que el búfer sea superior a 500 MB, ¿es eso posible? No parece hacer una diferencia si hago que el número de PostBuffer sea mayor ...
jowie
Gracias por el enlace: solucioné el problema dividiendo la inserción en fragmentos más pequeños. Si vuelvo a tener un problema, sé dónde buscar.
jowie
17
¿Sería una buena idea usar esto --global? Trato con grandes repositorios regularmente.
DaAwesomeP
2
@ shivam13juna nunca se borra nada de Internet: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/…
Roman M
3
Ejecuté "git config http.postBuffer 524288000", pero aún no se resuelve el problema, sigue diciendo lo mismo, el extremo remoto colgó inesperadamente
Narendra
80

Causa: se ha excedido el tamaño de publicación de archivo predeterminado para Git.

Solución:

Navega hasta el repositorio.

Ejecute el siguiente comando para aumentar el búfer a 500 MB después de navegar al repositorio:

git config http.postBuffer 524288000
Chinu
fuente
2
Por favor formatee su código usando las etiquetas de código. También explique qué hace el código porque esta es una publicación antigua, haga que su respuesta sea lo mejor posible.
Dan Grahn el
31
También puede usarlo git config ssh.postBuffer 524288000si publica sobre ssh en lugar de http.
John M
Para algunos casosgit config --global http.postBuffer 100000000
Job M
Me sale 'fatal: no en un directorio git' después de la ejecución de este comando
ka3ak
@JohnM Esta opción no parece existir, no está documentada en la página del manual
Nadie
29

Es posible que reciba un error como este

error: no se pudo bloquear el archivo de configuración .git / config: No existe tal archivo o directorio

eso se debe a que no tiene un .git/configarchivo local . Puede hacerlo funcionar con este comando

git config --global http.postBuffer 524288000

niksmac
fuente
esto me ayudó cuando intentaba clonar en una PC muy lenta dentro de Cygwin - continuó con el extremo remoto colgado - hasta que usé este comando
serup
Esto me ayudó a resolver el problema "fatal: el extremo remoto colgó en el contacto inicial".
Karthic.K
15

Otras soluciones no funcionaron en mi caso, hacer una recolección de basura me lo arregló:

git gc --aggressive

Shameen
fuente
21
Esto solucionó mi problema, pero también aplastó los cambios de HEAD separados en un estado en el que fusionarlos se volvió desagradable (todo se convirtió en un ADD). Desearía haber investigado esto más antes de ejecutarlo.
MatrixManAtYrService 01 de
¿Cómo esto hace problema?
Annadate Piyush
9

Contrariamente a una de las otras respuestas (tuve el problema al presionar usando ssh), cambié a https y se solucionó.

git remote remove origin
git remote add origin https://github..com/user/repo
git push --set-upstream origin master
MikeB
fuente
8

Este error también se puede generar a través de permisos de escritura faltantes en el repositorio.


Mi caso concreto fue así:

  1. Creé un repositorio con el rootusuario de mi servidor (a través de SSH).
  2. Instalé un servicio git y creé un gitusuario de Linux que debería administrar todas las acciones relacionadas con git.
  3. En ese momento, había olvidado que el repositorio se creó con el rootusuario en primer lugar, y el gitusuario simplemente no tenía los permisos de archivo para escribir nada en el repositorio.
Loilo
fuente
4

Culpable (en mi caso):
una red de alta latencia.

Esta no es una respuesta per se sino más bien una observación que puede ayudar a otros. Descubrí que este error aparece ocasionalmente en redes de alta latencia (tengo que usar una antena parabólica para acceder a Internet, por ejemplo). La velocidad de la red está bien, pero la latencia puede ser alta. Nota: El problema solo existe en ciertos escenarios, pero no he determinado cuál es el patrón.

Mitigación temporal:
cambié de red (me mudé a una red celular más lenta pero de menor latencia (mi teléfono se usaba como punto de acceso)) y el problema desapareció. Tenga en cuenta que solo puedo hacer esto de manera intermitente porque la conectividad de mi celular también es intermitente. Además, el uso del ancho de banda agrega costos. También tengo suerte de tener esta opción disponible. No todos lo hacen.

Estoy seguro de que hay algún ajuste de configuración en algún lugar que hace que git, o ssh o curl o lo que sea que se agote primero, sea más tolerante con tales redes, pero no sé qué es.

Una súplica a los desarrolladores: este
tipo de problemas son un problema constante para las poblaciones rurales. Piense en nosotros cuando diseñe sus sistemas, herramientas y aplicaciones. Gracias.

t0dd
fuente
3

En nuestro caso, el problema era un clon que escribió un .git/configarchivo que contenía una entrada de URL que era un método de acceso de solo lectura. Cambiar la url del ://método al @método solucionó el problema.

Correr git remote -viluminó el problema un poco.

Frank P
fuente
3

Si está utilizando git para Windows (y probablemente lo esté haciendo si lo está haciendo en una máquina con Windows), y ninguna de las otras soluciones aquí funcionó para usted, intente ir a https://github.com/git-for- windows / git / releases , y obtener una versión en o después de la versión 2.4.5. Lo arregló para mí.

rrreee
fuente
3

Probablemente haya clonado el repositorio dentro de uno existente, para resolver el problema puede simplemente clonar el repositorio en otro directorio y replicar los cambios en este nuevo directorio y luego ejecutar el envío.

Marcos Bahiense
fuente
tenemos un flujo de trabajo beta ansible y la reconstrucción del sitio causó exactamente esto, clonando el repositorio encima del otro. Cosa que hay que solucionar pero que tiene un problema git. Gracias :-)
Alejandro Moreno
2

Otra adición, ya que encontré este error de una manera diferente y Google me llevó aquí.

Mi problema fue un desajuste de caso; un camelCase y otro no. Aparentemente, GIT te impide hacer esto sin decirte por qué. Entonces, si sus sucursales son diferentes del control remoto solo en la capitalización, intente cambiarlas para que sean idénticas.

Ver: Git: 'El maestro no se puede resolver para bifurcar' después de la fusión

Thomas
fuente
Pensé que incluía toda la información relevante; es causada por un desajuste de mayúsculas y minúsculas. Agregué una oración para ser más explícito, pero en realidad no se trata del enlace. Lo siento si eso no estaba claro.
Thomas
2

Esto puede ocurrir después de actualizar su plataforma OSX.

Abra la Terminal y navegue a su carpeta .ssh, e ingrese ssh-add -K ~/.ssh/id_rsa

cptstarling
fuente
2

PLESK Nginx y GIT Estaba recibiendo este error en plesk git y al presionar un gran repositorio con (quién sabe qué) me dio este error con el código HTTP 413 y busqué en el siguiente servidor que era Plesk y tenía nginx ejecutándose y apache2 así que busqué en los registros y encontré el error en los registros nginx

Seguí este enlace para permitir plesk para reconstruir la configuración con mayor carga de archivos.

Me salté la parte de php para git

Después de eso, git push funcionó sin ningún error.

Farrukh Subhani
fuente
1

Tuve el mismo error al tirar.
He hecho el truco "http.postBuffer". Lo resolvió, pero cuando quise presionar, encontré el error nuevamente.

Lo que resolvió mi problema:
1. Lo cloné en otra carpeta con otra máquina virtual. (Linux)
2. He hecho mis cambios.
3. Lo empujé con la máquina virtual original donde inicialmente no podía empujar. (Windows)

nopara73
fuente
¡Esto no es una solución amigo!
Behrouz.M
2
Sé que esta no es una solución ideal, pero resolvió el problema en mi caso. Todavía puede salvar la vida cuando falla la otra respuesta, como lo hicieron en mi caso.
nopara73
1

Recibí este error cuando tuve un par de claves incorrecto en .ssh. Agregar pubkey a github (en la configuración) solucionó este problema para mí.

Michel Samia
fuente
1

Tengo el mismo problema. Noté en la página web de git que la URL de clonación SSH tiene la siguiente estructura:

[email protected]:user/project.git

Podría resolver mi problema simplemente cambiando ":" por "/", de la siguiente manera:

[email protected]/user/project.git

puede ser esto puede ser útil.

David Romero
fuente
1

Parece casi inútil agregar una respuesta, pero estuve luchando contra esto durante años cuando finalmente descubrí que era Visual Studio Online el que sufría una interrupción esporádica. Eso se hizo evidente cuando VS siguió pidiendo credibilidad y el sitio web de VSO a veces daba 500.

Counting objects: 138816, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38049/38049), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly/138816), 33.30 MiB | 3.00 KiB/s
Writing objects: 100% (138816/138816), 50.21 MiB | 3.00 KiB/s, done.
Total 138816 (delta 100197), reused 134574 (delta 96515)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Luego configuré mi búfer de publicación HTTP a 2Mb, ya que realmente creo que funciona mejor con muchas publicaciones más pequeñas.

Luke

Luke Puplett
fuente
1

Parece que puede ser una de las mil cosas.

Para mí, inicialmente estaba presionando master y desarrollo (master no tenía cambios) a través de SourceTree. Cambiar esto para desarrollar solo funcionó.

JakeSteam
fuente
1

Estaba enfrentando un error similar al cargar un gran repositorio, "fatal: el extremo remoto colgó inesperadamente" sin más detalles.

Después de mucha investigación, esto es lo que hice:

  • El uso de SSH en lugar de HTTPS no resolvió el problema.
  • Aumento de http.postBuffer incrementalmente hasta un valor muy grande, todavía no hay suerte.
  • Descubrí que podría deberse a los archivos grandes en el repositorio (ya que este es un repositorio recién migrado de force), así que recreé el repositorio usando LFS, estableciendo largeFileThreshold en 40m, lo que redujo en gran medida el tamaño del repositorio (de 3.5G a 500M). Pensé que esto resolvería el problema, pero para mi sorpresa, aún me enfrento al mismo error.

Finalmente, se me ocurrió que podría estar usando un cliente git anterior, ya que no vi mensajes de error adicionales. Me pasaron cliente GIT a la última (2.20.1), y listo, se ha ido el error!

Mahmoud Hanafy
fuente
También tuve este problema exacto (aunque migrando de TFS). Actualicé de 2.19 a 2.20 y se solucionó, una mirada rápida a través de las notas de la versión no reveló cuál podría haber sido el problema.
George Richardson el
Acabo de actualizarme a 2.20.1.windows.1 y todavía no me deja pasar al repositorio remoto
Vidar
@Vidar Puede comprobar si hay archivos grandes, GitHub tiene un límite estricto de 100 MB help.github.com/articles/what-is-my-disk-quota ; Consulte la sección "Revisión manual de archivos grandes en su repositorio" en confluence.atlassian.com/bitbucket/… ; La página en sí es una buena lectura.
Mahmoud Hanafy
@MahmoudHanafy - gracias - era un parámetro en la web.config sobre el tamaño máximo de archivo - ¡aumente eso y git se comporta y todos están felices! No es GitHub para mí sino nuestro propio privado Bonobo.Git.Server.
Vidar
0

Recibí este error cuando escribí mal el nombre de mi sucursal remota

javaProgrammer
fuente
0

Pude solucionar este problema usando Git Shell.

Cada repositorio dentro de github.com le proporciona las URL HTTPS / SSH / Subversion que puede usar para descargar usando Shell, consulte aquí: http://prntscr.com/8ydguv .
Según los cambios recientes de GitHub, SSH parece ser el mejor método.

Comando para usar en Shell:

git clone "URL of repo goes here w/ no quotes"
David
fuente
¿Qué quieres decir con "Git Shell"? Utilizando giten una terminal?
Karl Richter
0

Haga esto para ver la clave que está utilizando; ssh -vT [email protected]

Luego, asegúrese de que en su compilación tenga esta ejecución al comienzo. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa

ddtraveller
fuente
0

1) cd al directorio del proyecto

2) git status

3) git checkout -f HEAD

4) confirme el éxito bajando el master nuevamente para asegurarse de que esté actualizado si su repositorio parecía incompleto

Esto funciona si recibe el error en cuestión de Visual Studio's Git al clonar un repositorio de Bitbucket

whyoz
fuente
0

Esto también puede suceder si alguna de las confirmaciones que está presionando tiene un formato incorrecto.

(Sin saberlo) me comprometí con un campo de correo electrónico de autor con formato incorrecto, pero todo lo que recibí fue este remote end hung upmensaje de error vago . Yo era capaz de empujar a otras ramas no presente una rama, así que empecé a empujar compromete desde el "malo" de una rama a la vez hasta que finalmente aterrizó en:

Pushing to [email protected]:directangular/unicorn.git
Counting objects: 100% (9/9), done.
Delta compression using up to 20 threads
Writing objects: 100% (5/5), 549 bytes | 549.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: object 74c7584ff0b93591c19d3a3c19695889dd2274d2: badEmail: invalid author/committer line - bad email        
remote: fatal: fsck error in packed object        
error: remote unpack failed: index-pack abnormal exit
To github.com:directangular/unicorn.git
 ! [remote rejected]       pizzafeast -> pizzafeast (failed)
error: failed to push some refs to '[email protected]:directangular/unicorn.git'

Por lo tanto, parece que el remote end hung up unexpectedlyerror está "tragando" el mensaje de error real, que probablemente sea una especie de confirmación malformada como la que tengo aquí.

Después de corregir el correo electrónico mal formado, pude presionar muy bien.

mgalgs
fuente
0

No creo que sea una buena idea hacerlo, pero si tiene una copia de seguridad en su máquina ... presione una vez más y luego intente clonar el repositorio y luego elimine .git del directorio anterior y mueva .git de la nueva carpeta clonada ... git está resuelto pero debido al problema, algunos archivos pueden no cargarse en git. Empuje nuevamente todo desde su copia de seguridad y luego jálelo a su servidor u otra máquina donde se dañe. En este momento acabo de hacer esto ... Funciona para mí ... y haga una copia de seguridad de su directorio antes de hacer esto.

Y por favor corrígeme si estoy equivocado. Tampoco sé qué puede salir mal después de hacer esto. Pero esta vez realmente funciona.

Sumit Rawat
fuente
0

mi problema (fatal: el extremo remoto se colgó inesperadamente) se ha resuelto verificando el permiso del repositorio y el propietario.

El propietario de los archivos del repositorio de git debe ser el usuario que desea empujar / tirar / clonar con él.

Samir Sayyad
fuente
0

Ninguna de las respuestas anteriores funcionó para mí, pero esto es lo que hizo.

1) eliminar .git/de su proyecto
2) clonar el repositorio remoto en una nueva ubicación como su escritorio. git clone https://github.com/foo/bar.git
3) muévase .git/de la nueva ubicación a la ubicación anterior
4) vuelva a comprometerse y presione sus cambios

Ben
fuente
0

La causa del problema para mí fue la configuración de la red: tengo una tarjeta wifi "Killer" que aparentemente no funciona con los paquetes de red de una manera que a SSH y SSL no les gusta.

Para solucionar el problema, tuve que ir al "Centro de control de Killer", "Parámetros" y desactivar "Detección avanzada de flujo": los comandos git comenzaron a funcionar de nuevo al instante.

Jean-Michaël Celerier
fuente