Ошибка fatal: The remote end hung up unexpectedly при выполнении git push

Иногда при работе с git через http возникает ошибка The remote end hung up unexpectedly. Это может обозначать одну из нескольких проблем. Одна из проблем – размер репозитория больше максимально допустимого размера будефа POST. Рассмотрим решение данной проблемы.

Вывод о данной ошибке выглядит примерно следующим образом:

Counting objects: 7928, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (7834/7834), done.
Writing objects: 100% (7928/7928), 204.43 MiB | 97.40 MiB/s, done.
Total 7928 (delta 968), reused 1 (delta 0)
error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Итак, первый вариант решения данной проблемы состоит в увеличении буфера данных POST запроса.

В первую очередь необхожимо узнать размер данных. В приведенном выше примере вывода размер равен 204.43 МБ. К этому числу добавим небольшой запас (например, до 250 МБ) и переведем все в байты. 250 МБ = 250 * 1024 * 1024 = 262144000 КБ. Задаем полученное значение в настройки git.

1
git config http.postBuffer 262144000

Этой командой мы выставили значение для конкретного репозитория, если необходимо применить данную настройку глобально, то необходимо добавить флаг –global:

1
git config --global http.postBuffer 262144000

Если ваш сервер для хранения git репозиториев имеет максимальный размер тела запроса меньше заданного размера, то необходимо перенастроить web-сервер (если есть такая возможность). Для этого необходимо изменить значение client_max_body_size (для nginx) или LimitRequestBody (для apache) и перезагрузить сервис (service nginx reload или service apache2 reload соответственно). Если сервер не аш и нет возможности его сконфигурировать, то остается вариант номер 2.

Второй вариант заключается в переходе с протокола http на ssh. Вам будет необходимо изменить адрес удаленного репозитория с помощью команды git remote set-url:

1
git remote set-url origin git@example.com:user/repository.git

Вот мы рассмотрели два пути решения ошибки The remote end hung up unexpectedly. Вероятно есть другие причины возникновения данной ошибки и иные пути решения. Эта статья не охватывает все возможные варианты, но надеюсь, что она вам помогла.

Добавить комментарий

%d такие блоггеры, как: