Помилка Github Push: помилка RPC; результат = 22, HTTP-код = 413


129

дурна проблема з 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
Мотес

Відповіді:


206

Якщо ви отримаєте помилку 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?
Катяні

будь-яке рішення для встановлення омнібуса gitlab ..? остання версія 12.1
shashwat

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

55

Я зрозумів це!!! Звичайно, я би відразу після того, як потрапив на пост!

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


51
Це не причина проблеми. Це просто вирішення. Хочу знати, чому його не вдалося отримати на 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
У разі BitBucket ( «Клон» кнопка) у мене була проблема , коли видаляється ssh://з ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitТак що будьте обережні, хлопці!
бойовий світло

9

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

Тож довелося встановити

client_max_body_size 50m; 

всередині обох файлів налаштування:

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

будь-яке рішення для встановлення омнібуса gitlab ..?
shashwat

можливо, подивіться на 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 endpoint:

Вам потрібно збільшити свою 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. Рішення - якось оновити лібкурл. Щоб отримати детальнішу інформацію про помилку, встановіть GIT_CURL_VERBOSE = 1

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

Значення помилки, згідно з документом libcurl: CURLE_HTTP_RETURNED_ERROR (22)

Це повертається, якщо для параметра CURLOPT_FAILONERROR встановлено ІСТИНА, а сервер HTTP повертає код помилки, який становить> = 400.

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


1

У мене виникла ця проблема, коли я намагаюся клонувати git repo в машині Linux.

наступна URL-адреса працює для мене у Windows

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

тоді як наступна URL-адреса працює в машині Linux і має URL-адресу в 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-клон списків не вдається (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
Ну, ОП запитав про спілкування з github. Чому я відповів на відповідь про суть, я навіть поняття не маю.
Жан Йордаан

Ага, досить справедливо :)
Оуен

0

Зіткнулося з тим же питанням. У моєму випадку це були несумісні версії GIT для багатьох користувачів, які отримують доступ (тягнути / натискати) на один і той же проект.

нещодавно оновив версію GIT та оновив шлях для налаштувань студії Android, і для мене це добре працює.

Редагувати -

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


0

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


1
коли я роблю git clean, він показує цю помилку: fatal: clean.requireForce за замовчуванням до істинного і ні -i, -n, ні -f не дано; відмова від очищення
Чандні

для @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.