Git push не удался: RPC не удался; result = 22, HTTP-код = 411
У меня есть только одна ветка. В течение нескольких месяцев я использовал
git push origin master
чтобы зафиксировать мой локальный репозиторий. Прошлой ночью после того, как я внес некоторые незначительные изменения в свой локальный репозиторий и попытался нажать, используя ту же команду, я получил эту ошибку:
error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
Я googled и нашел такие вопросы, как этот и этот, но ни один из ответов на эти вопросы решают мою проблему.
Большинство ответов указывают на проблему отсоединенной головы. Но я не думаю, что моя голова отделена. Я также не думаю, что я нахожусь на неправильной ветке (поскольку у меня только одна ветка...)
Я сделал несколько экспериментов, чтобы выяснить, что случилось, и вот результаты, которые я получил:
(1) Сначала появляется мой git status
вывод
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)
(2) Когда я набираю git reflog
, я могу видеть все мои локальные коммиты, но удаленный репозиторий просто не будет обновлен.
(3) Когда я набираю git branch -a
, я получаю
* master
remotes/origin/master
(4) Когда я набираю git remote show origin
, я получаю
* remote origin
Fetch URL: http://github.com/CherryQu921/egaldoc_en
Push URL: http://github.com/CherryQu921/egaldoc_en
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
Я думаю, что последняя строка вывода ( "fast-forwardable" ) является странной, но я не уверен, что не так...
Ответы
Ответ 1
Если вы попытаетесь выполнить большой набор изменений в репозитории Git с помощью HTTP или HTTPS, вы можете получить сообщение об ошибке, такое как ошибка: RPC failed; result=22, HTTP code = 411
. Это вызвано настройкой конфигурации Git, которая ограничивает определенные операции HTTP до 1 мегабайта.
Чтобы изменить этот лимит в локальном репозитории
git config http.postBuffer *bytes*
где bytes - максимальное допустимое количество байтов. Для exmaple:
git config http.postBuffer 524288000
За 500 МБ (спасибо @Hengjie)
Ответ 2
Вы также можете сделать это глобально -
git config --global http.postBuffer 524288000
Это позволит всем локальным репозиториям нажимать до 500 МБ данных.
Ответ 3
Если вы используете TortoiseGit для Windows, самый простой способ - использовать встроенную конфигурацию.
В проводнике файлов нажмите левую кнопку мыши, выберите TortoiseGit → Настройки. Принять информационное сообщение. Теперь вы можете выбрать, хотите ли вы настроить свойство только для текущего проекта или системы. Для системной конфигурации нажмите "Изменить системный gitconfig" и добавьте следующую строку в раздел [http]
:
postBuffer = 524288000
(это раздел [http]
не существует, создайте его)
Ответ 4
Ни одно из предоставленных решений не сработало для нас. Нам пришлось переключиться на ssh
, чтобы выполнить эту работу вместо решения HTTPS
.
Ответ 5
Я решил ошибку 22 следующим образом:
В команде "git clone" я НЕ дал пользователю пароль:.
Клон работал, но не толчок.
Решение для ошибки 22:
Измените .git/config url следующим образом:
url = http://user:[email protected]/...
Затем нажатие нажало.