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]/... Затем нажатие нажало.