Git не спрацьовує при натисканні на github


130

Я клонував git repo, який я розмістив у Github на своєму ноутбуку. Мені вдалося без проблем просунути пару комісій до github. Однак тепер я отримую таку помилку:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

Звідси воно просто зависає, і я, нарешті, повинен CTRL+ Cповернутися до терміналу.


Чому виникає помилка HTTP? Ви не натискаєте на Github через SSH?
Каскабель

Для уточнення: URL-адреса в originрозділі .git/configне говорить http, чи не так?
Каскабель

@Jefromi Я клонував своє приватне репо, використовуючи посилання http / read / write http.
Стівен Мелвін

Ні, це говорить https. Це дивно, тому що мені вдалося зробити два натискання до відмови.
Стівен Мелвін

Відповіді:


292

У мене була та сама проблема, і я вважаю, що вона має відношення до розміру репо-файлу (відредагованого або розміру певного файлу), який ви намагаєтеся натиснути.

В основному мені вдалося створити нові репости і підштовхнути їх до github. Але існуючий не працював би.

Код помилки HTTP, схоже, підтримує мене, це помилка "Необхідна довжина". Тому, можливо, вона занадто велика для калькування або змащення, ніж макс. Хто знає.

EDIT

Я виявив, що проблемою можуть бути великі файли. У мене було одне оновлення, яке не підштовхне, хоча я до цього моменту успішно просунувся. У комітеті був лише один файл, але це сталося 1.6M

Тому я додав наступну зміну конфігурації

git config http.postBuffer 524288000

Щоб дозволити розмір файлу до 500 М, а потім моє натискання спрацювало. Можливо, ця проблема була спочатку в натисканні на велике репо за протокол http.

END EDIT

так, як я міг би змусити його працювати (EDIT, перш ніж я змінив postBuffer), - це налаштувати репост, скопіювати його на машину, яка може робити git через ssh, і підштовхнути його до github. Тоді, коли ви намагаєтесь натиснути / потягнути з оригінального сервера, він повинен працювати над https. (оскільки це набагато менший обсяг даних, ніж оригінальний поштовх).

Сподіваюся, це допомагає.


Працював і для мене, хоча у мене була помилка HTTP 501, а не 411. Дякую!
Емаад Ахмед Манзур

Дякую! це спрацювало і навіть пришвидшило завантаження. Намагався підштовхнути веб-сайт до нових веб-сайтів Windows Azure, і це не вдавалось.
Джейк

23
Чи є недолік просто встановити це значення дуже високим?
snogglethorpe

@snogglethorpe Потенційно: "Transfer-Encoding: фрагмент використовується, щоб уникнути створення масивного файлу пакета локально". Якщо ви встановите значення на щось величезне, ви можете створити масивні файли пакунків при спробі натиснути. Не всі файлові системи добре обробляють масивні файли, і вони можуть не працювати ефективно. Ви можете бачити ці файли у .git / object / pack.
конопля

Зміна цього http.postBufferє більш непотрібною, ніж шкідливою, але є і негативний побічний ефект: збільшення його за замовчуванням може збільшити затримку для більших натискань (оскільки клієнт буферизує запит HTTP у більші шматки).
Swatantra Kumar

8

Якщо ця команда не допоможе

git config http.postBuffer 524288000

Спробуйте змінити метод ssh на https

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git

4

Схоже на проблему з сервером (тобто випуск "GitHub").
Якщо ви подивитеся на цю нитку , це може статися , коли git-http-backendотримує пошкоджену купу. (І так як вони просто поставити на місці на смарт HTTP підтримку ...)
Але незалежно від фактичної причини, воно також може бути пов'язано з недавніми спорадичними порушеннями в один із файлових серверів GitHub .

Ви все ще бачите це повідомлення про помилку? Тому що якщо ви робите:

  • перевірте свою локальну версію Git (та оновіть до останньої)
  • повідомте про це як про помилку GitHub .

Примітка. Підтримка смарт-HTTP - це велика справа для тих, хто стоїть за аутентифікованим проксі-сервером корпоративного брандмауера!

Відтепер, якщо ви клонуєте сховище за http://URL-адресою та використовуєте клієнтську версію Git версії 1.6.6 або новішої, Git автоматично використовує новіший, кращий транспортний механізм.
Ще більш дивовижним є те, що тепер ви можете натиснути на цей протокол і також клонувати приватні сховища. Якщо ви отримуєте доступ до приватного сховища або ви є співробітником і хочете натиснути доступ, ви можете ввести своє ім’я користувача в URL-адресу, і Git запропонує вам пароль, коли ви намагаєтесь отримати доступ до нього.

Старі клієнти також повернуться до більш старого, менш ефективного способу, тому нічого не повинно ламатися - просто нові клієнти повинні працювати краще.

Отже, переконайтеся, що спочатку оновіть свій клієнт Git.


У мене виникли подібні проблеми за бездротовим маршрутизатором ADSL (французький помаранчевий Livebox): неможливо опублікувати мій ключ SSH на github.com , натиснути застрягнути по https ..., поки я не використовую альтернативний доступ до Інтернету.
Ів Мартін

Підтримка Smart HTTP встигла перенести мене через наш проксі-брандмауер, коли я отримував "помилку: RPC не вдалося; результат = 22, код HTTP = 0", коли я намагався натиснути.
Богин

@Boggin Так, я підтверджую, що розумний http зазвичай є кращим вибором, коли хтось стоїть за проксі. Стандартний порт http / https (майже) завжди відкривається.
VonC


0

Я намагався натиснути на власний розміщений сервер bonobo-git, і не зрозумів, що http.postbuffer означає каталог проектів ...

так що тільки для інших заплутаних:

чому? У моєму випадку у мене були великі поштові файли з активами та деякими PSD, а також - великі для буфера.

Як зробити цей http.postbuffer: виконайте цю команду в каталозі src проекту поруч із папкою .git, а не на сервері.

Пам'ятайте, що великі темп (файли) файли будуть створені такого розміру буфера.

Примітка. Просто перевірте найбільші файли та встановіть буфер.


-2

Проблема натискання здебільшого пов’язана з розміром файлів, які потрібно натиснути. Я намагався підштовхнути деякі бібліотеки просто розміром 2 Мб, тоді теж натискання давала помилку RPC з результатом 7. Лінія має 4 Мбіт / с і працює чудово. Деякі наступні спроби наштовхнути мене на успіх. Якщо виникла така помилка, почекайте кілька хвилин і продовжуйте намагатися.

Я також з’ясував, що є деякі збої RPC, якщо github вниз або стає нестабільною мережею на їх стороні.

Тому продовжувати намагатися через деякі інтервали - це єдиний варіант!


-2

у цих випадках ви можете спробувати ssh, якщо https застряг.

Крім того, ви можете спробувати збільшити розмір буфера до астрономічної фігури, так що вам більше не доведеться турбуватися про розмір буфера більше git config http.postBuffer 100000000

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