Гіт, фатальний: Віддалений кінець несподівано повісився


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

1
можливий дублікат Git виходить
— CharlesB

13
git config http.postBuffer 524288000 # працює для мене
— Hari Das

якщо ви 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 та синхронізувати без проблем.
— lars pehrsson

Відповіді:


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: віддалене походження вже існує. ЧОМУ?
— almaruf

11
@almaruf це тому, що пульт originвже є, і ви намагаєтесь його замінити. git цього не дозволяє. Тож спочатку потрібно зробити git remote rm originпотім спробувати ще раз. Це спрацювало б
— Алфі

переконайтеся, що ви ініціалізуєте проект, якщо це новий свіжий клон зgit init
— Рауль

ви можете використовувати або протокол git через ssh (для якого потрібні ключі ssh), або протокол https, який вимагає імені користувача та пароля через особистий маркер доступу - я вважаю за краще пізніше
— Raul

520

Проблема пов'язана з налаштуваннями буфера git / https. Для того, щоб вирішити це (взяті з Git не вдається під час натискання на комбінат до github )

git config http.postBuffer 524288000

І знову запустіть команду


4
Мені потрібно, щоб буфер був вище 500 МБ - це можливо? Здається, це не має ніякого значення, якщо я зроблю номер PostBuffer вищим ...
— jowie

Дякую за посилання - я сортував проблему, розділивши натиск на менші шматки. Якщо у мене знову проблема, я знаю, де шукати!
— jowie

17
Було б гарною ідеєю використовувати це --global? Я регулярно маю справу з великими сховищами.
— DaAwesomeP

2
@ shivam13juna нічого не видаляється з Інтернету: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/…
— Роман М

3
Я запустив "git config 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
— Іов М

Я отримую "фатально: не в каталозі git" після виконання цієї команди
— ka3ak

@JohnM Ця опція, схоже, не існує, вона не зафіксована на сторінці man або git-scm.com/docs/git-config
— Ніхто

29

Ви можете отримати таку помилку

помилка: не вдалося заблокувати конфігураційний файл .git / config: Немає такого файлу чи каталогу

це тому, що у вас немає локального .git/configфайлу. Ви можете отримати його за допомогою цієї команди

git config --global http.postBuffer 524288000


це допомогло мені при спробі клонування на дуже повільному ПК усередині cygwin - він продовжував віддалений кінець завис - доки я не застосував цю команду
— serup

Це допоможе мені вирішити проблему "фатально: віддалений кінець завис при першому контакті".
— Karthic.K

15

Інші рішення не спрацювали в моєму випадку. Збір сміття виправив це для мене:

git gc --aggressive


21
Це вирішило мою проблему, але воно також розчавило окремі зміни HEAD до стану, коли їх злиття стало неприємним (все було перетворено на ADD). Мені б хотілося, щоб я дослідив це ще до його запуску.
— MatrixManAtYrService

Як це робить проблемою?
— Аннадати Піюш

9

Всупереч одній з інших відповідей - у мене була проблема при натисканні за допомогою 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

Винуватець (у моєму випадку):
мережа з високою затримкою.

Це не сама відповідь, а більше спостереження, яке може допомогти іншим. Я виявив, що ця помилка періодично виникає в мережах з високою затримкою (мені потрібно використовувати супутникову антену, наприклад, для доступу до Інтернету). Швидкість роботи мережі прекрасна, але затримка може бути високою. Примітка. Проблема існує лише у певних сценаріях, але я не визначив, що таке шаблон.

Тимчасове пом'якшення:
я переключився на мережі - я перейшов на більш повільну, але нижчу мережу затримки (мій телефон використовується як гаряча точка) - і проблема зникла. Зауважте, що я можу це робити лише непостійно, оскільки мій зв’язок з клітиною також переривчастий. Плюс використання пропускної здатності додає витрат. Мені також пощастило, що у мене є такий варіант, який мені доступний. Не всі так.

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

Заклик до розробників:
Такі проблеми є постійною проблемою для сільського населення. Будь ласка, подумайте про нас, коли розробляєте ваші системи, інструменти та програми. Дякую.


3

У нашому випадку проблемою був клон, який записав .git/configфайл, який містив запис URL-адреси, який був методом доступу лише для читання. Зміна URL-адреси з ://методу на @метод вирішила проблему.

Біг git remote -vвисвітлив проблему.


3

Якщо ви використовуєте git для Windows (і ви, ймовірно, це робите, якщо ви робите це на машині Windows), і жоден з інших виправлень тут не працює для вас, спробуйте перейти на https://github.com/git-for- Windows / git / релізи та отримання версії на версію 2.4.5 або після неї. Виправлено це прямо для мене.


3

Ви, ймовірно, клонували сховище у вже наявному, для вирішення проблеми можна просто клонувати сховище в іншому каталозі та повторити зміни в цей новий каталог, а потім запустити push.


у нас є бета-відповідальний робочий процес, і відновлення сайту спричинило саме це, клонувавши репо над іншим. Виправити відповідь, але вирішити проблему з git. Дякую :-)
— Алехандро Морено

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)


це не приятель рішення!
— Беруз.М

2
Я знаю, що це не ідеальне рішення, але воно вирішило проблему в моєму випадку. Це може бути ще рятівник, коли всі інші відповіді не вдаються, як це було в моєму випадку.
— nopara73

1

Я отримав цю помилку, коли у мене було неправильне введення ключа в .ssh. Додавання віскі до 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-буфер до 2Mb, оскільки я думаю, що він працює краще для багатьох менших постів.

Лука


1

Здається, це може бути одна з тисячі речей.

Для мене я спочатку підштовхував майстра і розвивався (у майстра не було змін) через SourceTree. Зміна цього на розвиток лише працювала.


1

Я зіткнувся з подібною помилкою під час завантаження великого репо, "фатального: віддалений кінець зненацька повісився" без додаткових деталей.

Після багатьох досліджень, ось що я зробив:

  • Використання SSH замість HTTPS не вирішило проблему.
  • Збільшуючи http.postBuffer поступово до дуже великого значення, все одно не пощастить.
  • Я зрозумів, що це може бути через великі файли в РЕПО (оскільки це нещодавно перенесений репо з perforce), тому я відтворив репо, використовуючи LFS, встановивши bigFileThreshold до 40 м, що значно зменшило розмір репо (з 3,5G до 500 млн). Я думав, що це вирішить проблему, але на моє здивування я все-таки зіткнувся з тією ж помилкою.

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


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

Щойно я оновив 2.20.1.Windows.1, і це все ще не дозволить мені перейти до віддаленого сховища
— Vidar

@Vidar Може перевірити наявність великих файлів, GitHub має суворий ліміт 100MB 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 надає вам HTTPS / SSH / Subversion URL-адреси, які ви можете використовувати для завантаження за допомогою 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 до проекту реж

2) git status

3) git checkout -f HEAD

4) підтвердьте успіх, знову натиснувши майстра, щоб переконатися, що ви в курсі, якщо ваше репо виглядало незавершеним

Це спрацьовує, якщо ви отримуєте запитання про помилку від Git Visual Studio під час клонування репо з Bitbucket


0

Це також може статися, якщо будь-який з зобов'язань, які ви наполягаєте, неправильно сформований.

У мене (невідомо) було здійснено 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. Знову натисніть все з ур резервного копіювання, а потім перетягніть його на ур-сервер чи іншу машину, де воно зіпсується. Зараз я просто зробив це ... Працює для мене .. і візьміть резервну копію свого режисера, перш ніж робити це.

І виправте мене, якщо я помиляюся. Я також не знаю, що може піти не так після цього? Але цього разу це справді працює.


0

мою проблему (фатально. Віддалений кінець несподівано припинився) було вирішено шляхом перевірки дозволу та власника сховища.

Власник файлів репозиторію git повинен бути тим користувачем, якого ви хочете натиснути / потягнути / клонувати.


0

Жодна з вищезазначених відповідей не працювала для мене, але ось що було.

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


0

Причиною проблеми для мене були мережеві налаштування: у мене є Wi-карта "Killer", яка, мабуть, не працює з мережевими пакетами таким чином, що SSH та SSL не подобаються.

Щоб виправити проблему, мені довелося зайти в «Центр контролю вбивць», «Параметри» та відключити «Розширене виявлення потоку» - команди git знову почали працювати.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.