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


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.