Мерзавец, смертельный: удаленный конец неожиданно завис


278

Когда я пытался бежать

git push origin master --force

Я только что получил

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

Это как-то связано с отсутствием безопасности? Я попытался создать открытый ключ, как в ответе для Fatal: удаленный конец неожиданно завис и запустил его снова, но он все еще не работает. Я на самом деле не использую ключ? Если да, то как мне его использовать?


пожалуйста, покажите выходные данныеgit remote -v
— CharlesB


13
git config http.postBuffer 524288000 # у меня это работает
— Хари Дас

если вы получите, error: could not lock config file .git/config: No such file or directoryпосмотрите stackoverflow.com/a/32329453/827525
— niksmac

1
Я не мог заставить любое из предложенных решений работать. Тогда я попробовал GitKraken. Это одна из немногих программ Git, которая не использует git.exe. GitKraken может сделать это. После того, как GitKraken выдвинул репозиторий, я мог вернуться к git.exe и синхронизироваться без проблем.
— Ларс Перссон

Ответы:


83

Это похоже на то, как я могу установить для github по умолчанию ssh, а не https для новых репозиториев . Вероятно, стоит попробовать перейти с протокола http на ssh:

$ git remote add origin git@github.com:username/project.git

Почему я не могу просто переключиться с http на https?
— DanielLC

10
bash-3.2 $ git remote add origin git@github.com: xxx / xx.git fatal: удаленный источник уже существует. ЗАЧЕМ ?
— Альмаруф

11
@almaruf это потому что пульт originуже есть и вы пытаетесь заменить его. мерзавец не позволяет этого. Таким образом, вы должны сначала сделать, а git remote rm originзатем попробовать еще раз. Это будет работать
— Alfie

убедитесь, что вы инициализируете проект, если это новый свежий клон сgit init
— Рауль

Вы можете использовать либо протокол git через ssh (для которого требуются ключи ssh), либо протокол https, для которого требуются имя пользователя и пароль через личный токен доступа - я предпочитаю более поздний
— Рауль

521

Проблема связана с настройками буфера git / https. Для того, чтобы решить это (взято из Git не удается при нажатии на коммит на github )

git config http.postBuffer 524288000

И снова запустите команду


4
Мне нужно, чтобы буфер был больше 500 МБ - это возможно? Кажется, это не имеет значения, если я увеличу число postBuffer ...
— Джоуи

Спасибо за ссылку - я разобрал проблему, разделив толчок на более мелкие куски. Если у меня возникнут проблемы, я знаю, где искать!
— Джоуи

17
Было бы хорошей идеей использовать это с --global? Я регулярно занимаюсь большими репозиториями.
— DaAwesomeP

2
@ shivam13juna никогда ничего не удаляется из интернета: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/...
— Roman M

3
Я побежал «мерзавец конфигурации http.postBuffer 524288000», но до сих пор вопрос не решен, он еще говорил то же самое, удаленный конец повесил трубку неожиданно
— Нарендра

80

Причина. Превышен размер сообщения по умолчанию для Git.

Решение :

Перейдите к репо.

Выполните следующую команду, чтобы увеличить буфер до 500 МБ после перехода к хранилищу:

git config http.postBuffer 524288000

2
Пожалуйста, отформатируйте ваш код, используя теги кода. Также объясните, что делает код, потому что это старый пост, сделайте ответ как можно лучше.
— Дэн Гран

31
Вы также можете использовать, git config ssh.postBuffer 524288000если размещать через ssh вместо http.
— Джон М

Для некоторых случаевgit config --global http.postBuffer 100000000
— Работа М

После выполнения этой команды я получаю 'fatal: not in git directory'
— ka3ak

@JohnM Эта опция, кажется, не существует, она не задокументирована на странице руководства
— Никто

29

Вы можете получить такую ​​ошибку

ошибка: не удалось заблокировать файл конфигурации .git / config: нет такого файла или каталога

это потому, что у вас нет локального .git/configфайла. Вы можете заставить его работать этой командой

git config --global http.postBuffer 524288000


это помогло мне при попытке клонировать на очень медленном ПК внутри cygwin - он продолжал
— serup

Это помогло мне решить проблему «фатальный: удаленный конец завис при первом контакте».
— Karthic.K

15

Другие решения не работали в моем случае, сборка мусора исправила это для меня:

git gc --aggressive


21
Это решило мою проблему, но также раздавило отдельные изменения HEAD в состояние, когда объединение их стало неприятным (все было преобразовано в ADD). Хотелось бы, чтобы я исследовал это еще раз, прежде чем запустить его.
— MatrixManAtYrService

Как это делает проблему?
— Аннадата Пиюш

9

Вопреки одному из других ответов - у меня была проблема с push через ssh - я переключился на https, и это было исправлено.

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

8

Эта ошибка также может быть вызвана отсутствующими разрешениями на запись в хранилище.


Мой конкретный случай пошел так:

  1. Я создал репо с rootпользователем моего сервера (через SSH).
  2. Я установил службу git и создал gitпользователя linux, который должен управлять всеми действиями, связанными с git.
  3. К тому времени я уже забыл, что rootв первую очередь создается репо с пользователем, и у gitпользователя просто не было прав доступа к файлам для записи чего-либо в репозиторий.

4

Culprit (в моем случае):
сеть с высокой задержкой.

Это не ответ сам по себе, а скорее наблюдение, которое может помочь другим. Я обнаружил, что эта ошибка иногда появляется в сетях с высокой задержкой (я должен использовать спутниковую антенну для доступа в интернет, например). Скорость сети хорошая, но задержка может быть высокой. Примечание: проблема существует только в определенных сценариях, но я не определил, что это за шаблон.

Временное смягчение:
я переключил сети - я перешел на более медленную сотовую сеть с более низкой задержкой (мой телефон использовался в качестве точки доступа) - и проблема исчезла. Обратите внимание, что я могу сделать это только случайно, потому что подключение к моей ячейке также прерывисто. Плюс использование полосы пропускания увеличивает затраты. Мне также повезло, что у меня есть эта опция для меня. Не все так делают.

Я уверен, что где-то есть какой-то параметр конфигурации, который делает git - или ssh, или curl, или любое другое время ожидания - более терпимым к таким сетям, но я не знаю, что это такое.

Призыв к разработчикам:
такого рода проблемы являются постоянной проблемой для сельского населения. Пожалуйста, подумайте о нас, когда вы разрабатываете свои системы, инструменты и приложения. Спасибо.


3

В нашем случае проблема заключалась в клоне, который написал .git/configфайл, содержащий запись URL, которая была доступна только для чтения. Изменение URL-адреса с ://метода на @метод решило проблему.

Бег git remote -vосветил вопрос какой-то.


3

Если вы используете git для Windows (и, вероятно, если вы делаете это на компьютере с Windows), и никакие другие исправления здесь не помогли, попробуйте зайти на https://github.com/git-for-. Windows / Git / Releases , и получение версии или после версии 2.4.5. Исправил это прямо для меня.


3

Вы, вероятно, клонировали репозиторий в существующем, чтобы решить проблему, можете просто клонировать репозиторий в другом каталоге и скопировать изменения в этот новый каталог, а затем запустить push.


у нас есть бета-тестируемый рабочий процесс, и перестройка сайта привела именно к этому, клонируя репо поверх другого. Исправляемая вещь, но это проблема с мерзавцем. Спасибо :-)
— Алехандро Морено

2

Еще одно дополнение, так как я столкнулся с этой ошибкой по-другому, и Google взял меня сюда.

Моя проблема была несоответствием случая; один верблюд, а другой нет. По-видимому, GIT останавливает вас, не говоря вам, почему. Поэтому, если ваши филиалы отличаются от удаленных только заглавными буквами, попробуйте изменить их на идентичные.

Смотрите: Git: «Мастер не может быть преобразован в ветвь» после слияния


Я думал, что включил всю соответствующую информацию - это вызвано несоответствием дела. Я добавил предложение, чтобы быть более явным, но на самом деле речь не идет о ссылке. Извините, если это не было ясно.
— Томас

2

Это может произойти после обновления вашей платформы OSX.

Откройте Терминал и перейдите в свою .ssh-папку и введите ssh-add -K ~/.ssh/id_rsa


2

PLESK Nginx и GIT Я получал эту ошибку на plesk git, и при отправке большого репозитория с (кто знает, что) он дал мне эту ошибку с HTTP-кодом 413, и я посмотрел, что следующим сервером был Plesk, и на нем был запущен nginx и apache2 так я заглянул в логи и нашел ошибку в логах nginx

Пройдя по этой ссылке, можно разрешить plesk перестроить конфигурацию с большей загрузкой файлов.

Я пропустил часть php для git

После этого git push работал без ошибок.


1

У меня случилась такая же ошибка при выдергивании.
Я сделал трюк "http.postBuffer". Это решило это, но когда я хотел нажать, я снова столкнулся с ошибкой.

Что решило мою проблему:
1. Клонировал ее в другую папку с другой виртуальной машиной. (Linux).
2. Я сделал свои изменения.
3. Протолкнул его с оригинальной виртуальной машиной, которую я изначально не мог нажать. (Windows)


это не решение, приятель!
— Behrouz.M

2
Я знаю, что это не идеальное решение, но оно решило проблему в моем случае. Это может быть спасение жизни, когда все остальные ответы терпят неудачу, как они сделали в моем случае.
— nopara73

1

Я получил эту ошибку, когда у меня была неправильная пара ключей в .ssh. Добавление pubkey к github (в настройках) исправило эту проблему для меня.


1

У меня та же проблема. На веб-странице git я заметил, что URL клона SSH имеет следующую структуру:

git@github.com:user/project.git

Я мог бы решить мою проблему, просто изменив ":" на "/", следующим образом:

git@github.com/user/project.git

может быть это может быть полезно


1

Кажется почти бессмысленным добавлять ответ, но я боролся с этим целую вечность, когда я наконец обнаружил, что Visual Studio Online страдает от спорадического сбоя. Это стало очевидным, когда VS продолжал запрашивать кредиты, а веб-сайт VSO иногда давал 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

После этого я установил свой HTTP-буфер сообщений обратно на 2 Мб, так как на самом деле я думаю, что он лучше работает со многими постами меньшего размера.

Люк


1

Кажется, это может быть одна из тысячи вещей.

Для меня я изначально подталкивал мастер и развивался (мастер не имел изменений) через SourceTree. Изменение этого для разработки только работало.


1

Я сталкивался с подобной ошибкой при загрузке большого репозитория, «роковой: удаленный конец неожиданно завис», без каких-либо дополнительных подробностей.

После долгих исследований вот что я сделал:

  • Использование SSH вместо HTTPS не решило проблему.
  • Увеличивать http.postBuffer постепенно до очень большого значения, все равно не повезло.
  • Я выяснил, что это может быть из-за больших файлов в репо (так как это недавно перенесенный репо из перформанса), поэтому я заново создал репо, используя LFS, установив largeFileThreshold на 40 м, что значительно уменьшило размер репо (с 3,5 ГБ до 500M). Я думал, что это решит проблему, но, к моему удивлению, я все еще столкнулся с той же ошибкой.

Наконец, мне пришло в голову, что, возможно, я использую старый git-клиент, так как не вижу дополнительных сообщений об ошибках. Я обновил git client до последней (2.20.1), и вуаля, ошибка исчезла!


У меня также была эта проблема (хотя переход с TFS). Я обновил с 2.19 до 2.20, и это было исправлено, хотя беглый просмотр замечаний к выпуску не показал, в чем проблема.
— Джордж Ричардсон

Я только что обновился до 2.20.1.windows.1, и он все еще не позволяет мне перейти в удаленный репозиторий
— Vidar

@Vidar Может быть проверен для больших файлов, GitHub имеет строгий лимит в 100 МБ help.github.com/articles/what-is-my-disk-quota ; Загляните в раздел «Ручной просмотр больших файлов в вашем хранилище» на confluence.atlassian.com/bitbucket/… ; Сама страница хорошо читается.
— Махмуд Ханафи

@MahmoudHanafy - спасибо - это был параметр в web.config о максимальном размере файла - увеличьте это, и git будет вести себя хорошо, и все будут довольны! Это не GitHub для меня, а наш личный сайт Bonobo.Git.Server.
— Видар

0

Я получил эту ошибку, когда неправильно написал имя моей удаленной ветки


0

Я смог обойти эту проблему с помощью Git Shell.

Каждый репозиторий на github.com содержит URL-адреса HTTPS / SSH / Subversion, которые можно использовать для загрузки с помощью Shell, см. Здесь: http://prntscr.com/8ydguv .
Основываясь на последних изменениях GitHub, SSH кажется лучшим методом.

Команда для использования в Shell:

git clone "URL of repo goes here w/ no quotes"

Что вы подразумеваете под "Git Shell"? Использование gitв терминале?
— Карл Рихтер

0

Сделайте это, чтобы увидеть ключ, который вы используете; ssh -vT git@github.digitalglobe.com

Затем убедитесь, что в вашей сборке у вас есть этот запуск в начале. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa


0

1) cd к проекту dir

2) git status

3) git checkout -f HEAD

4) Подтвердите успех, снова потянув мастера, чтобы убедиться, что вы в курсе, если ваш репо выглядел не полностью

Это работает, если вы получаете сообщение об ошибке из Git Visual Studio при клонировании репозитория из Bitbucket


0

Это также может произойти, если какие-либо коммиты, которые вы нажимаете, искажены.

У меня (по незнанию) был коммит с искаженным полем Email автора, но все, что я получал, это смутное remote end hung upсообщение об ошибке. Я был в состоянии выдвинуть другие отрасли только это не одна ветви, поэтому я начал толкая совершающие от «плохого» филиала одного в то время , пока я , наконец, приземлился в:

Pushing to git@github.com: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 'git@github.com:directangular/unicorn.git'

Таким образом, похоже, что remote end hung up unexpectedlyошибка является своего рода «проглатыванием» фактического сообщения об ошибке, что, вероятно, является своего рода некорректным коммитом, как у меня здесь.

После исправления искаженного письма я смог толкнуть просто отлично.


0

Я не думаю, что это хорошая идея, но если у вас есть резервная копия на вашем компьютере ... нажмите еще раз, а затем попробуйте клонировать репозиторий, а затем удалите .git из старого каталога и переместите .git из новой клонированной папки. Git разрешен но из-за этой проблемы некоторые файлы могут не загружаться в git. Снова переместите все назад, затем перетащите его на сервер или другой компьютер, на котором оно прервано. Прямо сейчас я только что сделал ... Работает на меня ... и делаю резервную копию вашего каталога, прежде чем сделать это.

И, пожалуйста, поправьте меня, если я ошибаюсь. Я также не знаю, что может пойти не так после этого? Но на этот раз это действительно работает.


0

Моя проблема (неустранимая: удаленный конец зависает неожиданно) была решена путем проверки разрешения и владельца хранилища.

Владелец файлов репозитория git должен быть тем пользователем, которому вы хотите push / pull / clone.


0

Ни один из приведенных выше ответов не сработал для меня, но вот что сработало.

1) удалить .git/из вашего проекта
2) клонировать удаленное хранилище в какое-то новое место, например, на рабочий стол. git clone https://github.com/foo/bar.git
3) переместиться .git/из нового местоположения в старое местоположение
4) повторно зафиксировать и отправить изменения


0

Причиной проблемы для меня были настройки сети: у меня есть Wi-Fi-карта «Killer», которая, очевидно, работает с сетевыми пакетами так, как не нравятся SSH и SSL.

Чтобы решить проблему, мне пришлось зайти в «Killer Control Center», «Параметры» и отключить «Advanced Stream Detect» - команды git снова начали работать мгновенно.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.