Ошибка Github Push: сбой RPC; результат = 22, код HTTP = 413


130

глупая проблема с 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, так что, похоже, проблема не в этом. Что бы это могло быть?


3
Для будущих посетителей, если вы получаете HTTP code = 0, GitHub не работает, как вчера.
Пользователь StackExchange

3
Получил, HTTP code = 0когда мой прокси блокировал. Мой http-прокси работает с github, но https не работает с моим корпоративным прокси. Я думаю, что мой прокси HTTPS заставляет NTLM, а HTTP принимает BASIC. Я изменил URL-адрес источника репо с https на http, и у меня это сработало. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Ответы:


208

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

Решение для nginx

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

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

Решение для Apache

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

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


1
50 метров мне было недостаточно, но это решило мою проблему! Спасибо!
Кевин К. Кринке

Мне пришлось сделать это также на промежуточном прокси-сервере nginx.
jperelli

2
Что делать, если вы не используете Nginx?
Katianie

любое решение для установки gitlab omnibus ..? последняя версия 12.1
шашват 09

После долгих поисков, ругательств и слез. (в таком порядке) Я обнаружил, что встроенный файл конфигурации находится по адресу: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

55

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

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


52
Проблема не в этом. Это просто обходной путь. Я хочу знать, почему он не работает на https.
Стив Уолш,

4
Для меня ssh не вариант. Так что, если вы находитесь в такой же ситуации @ZincX, см. Мой ответ выше.
Tinou

2
Это просто работа. Ответ Тиноу должен быть принятым ответом.
Бен

1
как ты это изменил?
Дайнюс Крейвис

Многие люди, вероятно, не имеют доступа к своему веб-серверу, поэтому мы очень ценим эту информацию!
Мэтью

38

команда для изменения удаленного URL-адреса (с https -> git @ ...) выглядит примерно так

git remote set-url origin git@github.com:GitUserName/GitRepoName.git

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


2
В случае битбакета (кнопка «Клонировать») у меня возникла проблема при удалении ssh://из ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitТак что будьте осторожны, ребята!
Fightlight

9

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

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

client_max_body_size 50m; 

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

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

любое решение для установки gitlab omnibus ..?
шашват 08

может быть, взгляните на omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
grimabe

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

6

У меня уже было «HTTPS //» в URL-адресе git, но я столкнулся с этой ошибкой.

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

git push -u origin master


4

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

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

Запустите диспетчер информационных служб Интернета (IIS)

  1. Разверните поле Сервер

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

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

  4. В разделе «Возможности» дважды щелкните Configuration Editor

  5. Под Sectionвыбором:system.webServer > serverRuntime

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

  7. щелчок Apply

  8. Перезагрузите сайт


Чтобы перезапустить веб-сайт, я выбрал веб-сайт по умолчанию, а с правой стороны в разделе « Действия» есть кнопки « Стоп» и « Старт» .
jgoeders

Это исправление все еще требовалось в IIS 10.
jgoeders

2

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

git config --global http.postBuffer 157286400

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


1

Ошибка возникает в 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 установлено значение TRUE, а HTTP-сервер возвращает код ошибки> = 400.

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


1

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

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

http://swamy@git.swamy.com/scm/project/swamy-main.git

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

https://swamy@git.swamy.com/scm/project/swamy-main.git

1

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


1

Вы используете ссылки 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 git@github.com:[user_name]/[project_name].git

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



0

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

12:00 jean@laptop:~/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 git@gist.github.com:123456.git


ОП спрашивал не о клоне, а о толчке.
Оуэн Блэкер

1
Ну ОП спрашивал про связь с гитхабом. Я понятия не имею, почему я ответил на этот вопрос.
Jean Jordaan

Ха, достаточно честно :)
Оуэн Блэкер

0

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

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

Редактировать -

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


0

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


1
когда я делаю git clean, отображается эта ошибка: fatal: clean.requireForce по умолчанию установлено значение true, и ни -i, ни -n, ни -f не указаны; отказ от чистки
Chandni

для @Chandni и всех, кто сталкивается с таким же сообщением об ошибке, git помогает вам сам, git clean -iнапример , попробуйте запустить в интерактивном режиме.
просмотр

@seethrough - Спасибо
Чандни

0

Необходимо изменить удаленный URL-адрес на ssh или https

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

или

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

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.