Git не работает при отправке коммита в github

131

Я клонировал репозиторий git, который я разместил на 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? Разве через SSH на гитхаб не проталкиваешь?
Cascabel
Чтобы уточнить: URL-адрес в originразделе .git/configне говорит http, не так ли?
Cascabel
@Jefromi Я клонировал свое частное репо, используя http-ссылку для чтения / записи.
Стивен Мелвин
Нет, там написано https. Это странно, потому что я смог сделать два нажатия до отказа.
Стивен Мелвин,

Ответы:

293

У меня была такая же проблема, и я считаю, что это связано с размером репо (отредактированным или размером конкретного файла), который вы пытаетесь отправить.

В основном я мог создавать новые репозитории и помещать их в github. Но существующий не годится.

Код ошибки HTTP, кажется, поддерживает меня, это ошибка «Требуется длина». Так что, возможно, оно слишком велико для расчета или определения макс. Кто знает.

РЕДАКТИРОВАТЬ

Я обнаружил, что проблема может быть в файлах большого размера. У меня было одно обновление, которое не запускалось, хотя до этого момента у меня были успешные пуши. В коммите был только один файл, но его размер оказался 1,6 МБ.

Итак, я добавил следующее изменение конфигурации

git config http.postBuffer 524288000

Чтобы разрешить до размера файла 500M, а затем мой толчок сработал. Возможно, изначально это была проблема с отправкой большого репо по протоколу http.

КОНЕЦ РЕДАКТИРОВАНИЯ

способ, которым я мог заставить его работать (РЕДАКТИРОВАТЬ до того, как я изменил postBuffer), заключался в том, чтобы настроить мое репо, скопировать его на машину, которая может выполнять git через ssh, и отправить его на github. Затем, когда вы пытаетесь выполнить push / pull с исходного сервера, он должен работать через https. (поскольку это гораздо меньший объем данных, чем исходный push).

Надеюсь это поможет.

Будет
источник
У меня тоже сработало, хотя у меня была ошибка HTTP 501, а не 411. Спасибо!
Эмаад Ахмед Манзур
Спасибо! это сработало и даже ускорило загрузку. Пытался перенести веб-сайт на новые веб-сайты Windows Azure, но безуспешно.
Jake
23
Есть ли недостаток в установке очень высокого значения?
snogglethorpe 06
@snogglethorpe Потенциально: «Transfer-Encoding: chunked используется, чтобы избежать локального создания большого файла пакета». Если вы установите значение на что-то огромное, вы можете в конечном итоге создать массивные файлы пакетов при попытке нажать. Не все файловые системы хорошо обрабатывают массивные файлы и не могут эффективно сокращать их. Вы можете увидеть эти файлы в .git / objects / pack.
конопля
Изменение http.postBufferбольше ненужно, чем вредно, но есть отрицательный побочный эффект: увеличение его выше значения по умолчанию может увеличить задержку для более крупных нажатий (поскольку клиент будет буферизовать HTTP-запрос в более крупные фрагменты).
Сватантра Кумар
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 .

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

С этого момента, если вы клонируете репозиторий по http://URL-адресу и используете клиент Git версии 1.6.6 или выше, Git будет автоматически использовать более новый, лучший механизм транспорта.
Еще более удивительно то, что теперь вы можете использовать этот протокол и клонировать частные репозитории. Если вы получаете доступ к частному репозиторию или являетесь соавтором и хотите получить доступ по push-технологии, вы можете указать свое имя пользователя в URL-адресе, и Git предложит вам ввести пароль, когда вы попытаетесь получить к нему доступ.

Старые клиенты также вернутся к старому, менее эффективному способу, поэтому ничего не должно сломаться - просто новые клиенты должны работать лучше.

Итак, снова обязательно сначала обновите свой клиент Git.

VonC
источник
У меня были похожие проблемы с беспроводным маршрутизатором ADSL (французский Orange Livebox): невозможно опубликовать мой SSH-ключ на github.com , нажать застрял по https ... пока я не воспользуюсь альтернативным доступом в Интернет.
Yves Martin
Службе поддержки Smart HTTP удалось получить меня через прокси-сервер брандмауэра, когда я получал сообщение «error: RPC failed; result = 22, HTTP code = 0», когда я пытался нажать.
Boggin
@Boggin Да, я подтверждаю, что smart http обычно является предпочтительным выбором, когда кто-то находится за прокси. Стандартный порт http / https (почти) всегда открыт.
VonC
0

У меня работает нажатие из графического интерфейса Git вместо Bash.

Виталий Лескив
источник
0

Я попытался нажать на свой собственный сервер bonobo-git и не понял, что http.postbuffer означает каталог проекта ...

так что просто для других запутанных:

Зачем? В моем случае у меня были большие zip-файлы с активами и несколько загруженных PSD - думаю, слишком большой для буфера.

Как это сделать http.postbuffer: выполните эту команду в каталоге src вашего проекта, рядом с папкой .git, а не на сервере.

имейте в виду, что из этого размера буфера будут созданы большие временные файлы (фрагменты).

Примечание. Просто проверьте самые большие файлы, а затем установите буфер.

BananaAcid
источник
-2

Проблема с отправкой в ​​основном связана с размером файлов, которые необходимо отправить. Я пытался протолкнуть несколько библиотек размером всего 2 Мб, тогда тоже выдавалась ошибка RPC с результатом 7. Линия имеет 4 Мбит / с и работает нормально. Некоторые последующие попытки подтолкнуть меня к успеху. Если возникает такая ошибка, подождите несколько минут и продолжайте попытки.

Я также обнаружил, что есть некоторые сбои RPC, если github не работает или у них нестабильная сеть.

Так что продолжать попытки через некоторое время - единственный вариант!

Апурв Нерлекар
источник
-2

в этих случаях вы можете попробовать ssh, если https застрял.

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

РахулМохан Колаканды
источник