Git терпит неудачу при нажатии на commit к github
Я клонировал 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 к терминалу.
8 ответов
У меня была та же проблема, и я считаю, что это связано с размером репозитория (отредактированный или размер определенного файла), который вы пытаетесь подтолкнуть.
По сути, я смог создать новые репозитории и перенести их на github. Но существующий не будет работать.
Код ошибки HTTP, кажется, поддерживает меня, это ошибка "Требуемая длина". Так что, может быть, он слишком большой, чтобы его накипеть или смазать, что макс. Кто знает.
РЕДАКТИРОВАТЬ
Я обнаружил, что проблема может быть в файлах большого размера. У меня было одно обновление, которое не было бы запущено, даже если до этого момента у меня были успешные обновления. В коммите был только один файл, но он оказался 1.6M
Поэтому я добавил следующее изменение конфигурации
git config http.postBuffer 524288000
Чтобы разрешить до размера файла 500M, а затем мой пуш работал. Вполне возможно, что изначально это была проблема с продвижением большого репо по протоколу http.
КОНЕЦ РЕДАКТИРОВАНИЯ
я мог заставить его работать (РЕДАКТИРОВАТЬ до того, как я изменил postBuffer), чтобы записать в репозиторий репозиторий, скопировать его на компьютер, который может выполнять git поверх ssh, и отправить его в github. Затем, когда вы пытаетесь сделать push / pull с исходного сервера, он должен работать через https. (так как это намного меньший объем данных, чем оригинальный толчок).
Надеюсь это поможет.
Если эта команда не поможет
git config http.postBuffer 524288000
Попробуйте изменить метод SSH на https
git remote -v
git remote rm origin
git remote add origin https://github.com/username/project.git
Похоже, проблема с сервером (то есть проблема "GitHub").
Если вы посмотрите на эту тему, это может произойти, когда git-http-backend
получает поврежденную кучу.(и так как они только что создали интеллектуальную поддержку http...)
Но какова бы ни была настоящая причина, это также может быть связано с недавними случайными сбоями в работе одного из файловых серверов GitHub.
Вы все еще видите это сообщение об ошибке? Потому что, если вы делаете:
- проверьте локальную версию Git (и обновите до последней)
- сообщить об этом как об ошибке GitHub.
Примечание. Поддержка Smart HTTP является серьезной проблемой для тех из нас, кто использует прокси-сервер корпоративного брандмауэра на основе аутентификации!
Отныне, если вы клонируете репозиторий над
http://
url и вы используете Git-клиент версии 1.6.6 или более поздней, Git автоматически использует более новый и лучший транспортный механизм.
Однако еще более удивительным является то, что теперь вы можете использовать этот протокол и клонировать частные репозитории. Если у вас есть доступ к частному репозиторию или вы являетесь соавтором и хотите получить push-доступ, вы можете указать свое имя пользователя в URL-адресе, и Git предложит вам ввести пароль, когда вы попытаетесь получить к нему доступ.Старые клиенты также прибегнут к более старому, менее эффективному способу, поэтому ничто не должно сломаться - просто новые клиенты должны работать лучше.
Итак, еще раз, убедитесь, что сначала обновите свой клиент Git.
Я попытался перейти на свой собственный сервер bonobo-git и не понял, что http.postbuffer означает каталог проекта...
так что просто для других запутанных:
Зачем? В моем случае у меня были большие zip-файлы с активами и некоторые PSD-файлы, которые, как я полагаю, были увеличены.
Как сделать это http.postbuffer: выполните эту команду в каталоге src вашего проекта, рядом с папкой.git, а не на сервере.
Имейте в виду, что будут создаваться большие временные (chunk) файлы с таким размером буфера.
Примечание: просто проверьте ваши самые большие файлы, затем установите буфер.
Ничего из этого не сработало для меня - решение заключалось в том, чтобы поэтапно ставить репозиторий следующим образом:
git add -- . ':!path/to/big_folder_1'
git commit -m "commit x"
git push
... repeat
Проблема в том, чтобы подтолкнуть, в основном из-за размера файлов, которые нужно подтолкнуть. Я пытался протолкнуть некоторые библиотеки размером всего 2 МБ, затем тоже выдал ошибку RPC с результатом 7. Линия имеет 4 Мбит / с и работает нормально. Несколько последующих попыток толчка принесли мне успех. Если такая ошибка возникает, подождите несколько минут и продолжайте попытки.
Я также обнаружил, что есть некоторые сбои RPC, если github не работает или работает нестабильная сеть на их стороне.
Так что продолжать попытки через определенные промежутки времени - единственный вариант!
В этих случаях вы можете попробовать ssh, если https завис.
Также вы можете попробовать увеличить размер буфера до астрономической цифры, чтобы вам больше не приходилось беспокоиться о размере буфера git config http.postBuffer 100000000