Ошибка Github Push: ошибка RPC; result = 22, HTTP-код = 413

глупая проблема с Github происходит прямо сейчас. У меня приличное количество изменений (~ 120 МБ), когда я пытаюсь нажать, вот что происходит:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly

Я уже сделала

git config http.postBuffer 524288000, так что, похоже, проблема не в этом. Что бы это могло быть?

Ответ 1

Я понял это!!! Конечно, я бы сразу после того, как ударил пост!

У меня был набор репо для использования HTTPS-url, я изменил его на SSH-адрес, и все возобновилось, работая безупречно.

Ответ 2

Если вы получаете ошибку 413, проблема не связана с git, а с вашим веб-сервером. Это ваш веб-сервер, который блокирует большие файлы для загрузки.

Решение для nginx

Просто загрузите nginx.conf и добавьте client_max_body_size 50m; (изменив значение в соответствии с вашими потребностями) в блоке http.

Перезагрузите nginx, чтобы принять новый конфиг, выполнив sudo service nginx reload и повторите попытку, чтобы нажать фиксацию поверх http.

Решение для Apache

В httpd.conf добавьте LimitRequestBody 52428800 (изменив значение в соответствии с вашими потребностями) внутри блока <Directory />. При этом вы можете ограничить запрос всей файловой системы сервера, всего одного виртуального хоста или каталога.

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

Ответ 3

для изменения удаленного URL (из https → git @...) есть что-то вроде этого

git remote set-url origin [email protected]:GitUserName/GitRepoName.git

происхождение здесь - это имя моего удаленного (сделать git remote, а то, что выдается, - это ваше происхождение).

Ответ 4

У меня была та же проблема, но я использовал обратный прокси.

Поэтому мне пришлось установить

client_max_body_size 50m; 

внутри обоих файлов конфигурации:

  • на веб-сервере gitlab nginx (как указано в предыдущих ответах)
  • , но также и на обратном прокси nginx, размещенном на выделенном сервере.

Ответ 5

У меня уже был "HTTPS//" в URL git, но он столкнулся с этой ошибкой.

Все, что я делал, это добавить опцию -u с push и она сработала.

git push -u origin master

Ответ 6

Для тех, кто использует IIS 7 для размещения конечной точки git http/https:

Вам нужно увеличить uploadReadAheadSize.

Запустить Диспетчер служб IIS

  • Разверните поле "Сервер"

  • Развернуть сайты

  • Выберите сайт, для которого вы хотите внести изменения.

  • В разделе "Функции" дважды щелкните Configuration Editor

  • В разделе Section выберите: system.webServer > serverRuntime

  • Измените раздел uploadReadAheadSize (значение должно быть между 0 и 2147483647.)

  • Нажмите Apply

  • Перезагрузите веб-сайт

Ответ 7

Если вы столкнулись с этой проблемой во время изменения большого размера, выполните команду ниже в терминале.

git config --global http.postBuffer 157286400

Смотрите это для более подробной информации.

Ответ 8

У меня возникла эта проблема, когда я пытаюсь клонировать репозиторий git на машине Linux.

для меня в Windows работает следующий URL:

http://[email protected]/scm/project/swamy-main.git

тогда как следующий URL-адрес работает на машине Linux и имеет https в URL

https://[email protected]/scm/project/swamy-main.git

Ответ 9

https clone of gists терпит неудачу (ssh работает, см. ниже):

12:00 [email protected]:~/tmp$ GIT_CURL_VERBOSE=1 git clone https://gist.github.com/123456.git username
Initialized empty Git repository in /home/jean/tmp/username/.git/
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> GET /123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:51 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack'
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:52 GMT
< Content-Type: application/x-git-upload-pack-advertisement
< Transfer-Encoding: chunked
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Vary: Accept-Encoding
<
* Connection #0 to host gist.github.com left intact
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * connected
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
* SSL re-using session ID
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> POST /123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
Content-Length: 116

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:53 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/git-upload-pack'
* Violate RFC 2616/10.3.2 and switch from POST to GET
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result

* The requested URL returned error: 400
* Closing connection #0
error: RPC failed; result=22, HTTP code = 400

Это работает: git clone [email protected]:123456.git

Ответ 10

У меня была эта ошибка (ошибка: RPC failed; result = 22, HTTP code = 413), когда я попытался выполнить мою первоначальную фиксацию в новом репозитории BitBucket. Ошибка произошла для меня, потому что у репликации BitBucket была ветвь без мастера. Если вы используете SourceTree, вы можете создать главную ветвь в начале координат, нажав кнопку Git Flow.

Ответ 11

Ошибка возникает в 'libcurl', который является базовым протоколом для загрузки https. Решение - как-то обновить libcurl. Чтобы получить более подробную информацию об ошибке, установите GIT_CURL_VERBOSE = 1

https://confluence.atlassian.com/pages/viewpage.action?pageId=306348908

Значение ошибки, согласно libcurl doc: CURLE_HTTP_RETURNED_ERROR (22)

Это возвращается, если для параметра CURLOPT_FAILONERROR установлено значение ИСТИНА, а HTTP-сервер возвращает код ошибки >= 400.

http://curl.haxx.se/libcurl/c/libcurl-errors.html

Ответ 12

У меня была такая же проблема (в Win XP), я обновил файл libcurl-4.dll в моем каталоге bin Git до версии SSL из http://www.paehl.com/open_source/?download=curl_DLL_ONLY.7z (переименование в libcurl4.dll). Теперь все работает нормально.

Ответ 13

Столкнулась с такой же проблемой. В моем случае это были несовместимые версии GIT для нескольких пользователей, которые обращаются к одному и тому же проекту (pull/push).

только что обновили версию GIT и обновили путь к настройкам студии Android, и она отлично работает для меня.

Изменить -

Git для Windows (1.9.5) с некоторыми проблемами, обновление может помочь.

Ответ 14

Столкнулась с одной и той же проблемой, однако она была решена путем очистки хранилища git (очистить невоспроизводимые файлы с помощью "git clean" ).

Ответ 15

Нужно изменить удаленный URL на SSH или HTTPS

git remote set-url origin [email protected]:laravel/laravel.git

или же

git remote set-url origin https://github.com/laravel/laravel.git

Надеюсь, это поможет :)

Ответ 16

Используете ли вы ссылки https вместо ссылок ssh? Поскольку ссылка https ограничена размером загрузки HttpServer (например, Apache, Ngnix), при использовании ssh такого ограничения нет.

Используйте следующий метод для переключения на ссылку ssh.

  1. Откройте терминал.
  2. Переключитесь на рабочий каталог вашего проекта.
  3. Получить имя удаленного хранилища
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Измените адрес git на ссылку ssh.
git remote set-url origin [email protected]:[user_name]/[project_name].git

Если вы определите имя удаленного репозитория, перейдите непосредственно к шагу 4. Теперь вы можете успешно выполнить операцию push.

Ответ 17

Когда я использовал URL-адрес https для отправки на удаленный мастер, я столкнулся с той же проблемой, я изменил его на адрес SSH, и все возобновило работу без нареканий.