Github 푸시 오류 : RPC 실패; 결과 = 22, HTTP 코드 = 413


129

지금 Github과 관련된 어리석은 문제. 적절한 크기의 변경 (최대 120MB)이 있는데, 푸시하려고 할 때 이런 일이 발생합니다.

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는 회사 프록시에 적합하지 않습니다. HTTP가 BASIC을 수락하는 동안 HTTPS 프록시가 NTLM을 강제한다고 생각합니다. 나는 repo origin URL을 https에서 http로 변경했고 그것은 나를 위해 일했다. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

답변:


206

오류 413이 발생하면 문제는 git이 아니라 웹 서버에 있습니다. 큰 업로드 파일을 차단하는 것은 웹 서버입니다.

nginx를위한 솔루션

http 블록에 로드 nginx.conf하고 추가 client_max_body_size 50m;(필요에 따라 값 변경)하십시오.

실행하여 새 구성을 수락하도록 nginx를 다시로드 sudo service nginx reload하고 http를 통해 커밋을 다시 푸시하십시오.

아파치 솔루션

당신에 httpd.conf추가 LimitRequestBody 52428800, 안쪽 (필요에 값 변경) <Directory />블록을. 이렇게하면 전체 서버 파일 시스템, 단일 가상 호스트 또는 디렉토리의 요청을 제한 할 수 있습니다.

이게 도움이 되길 바란다.


1
50m로는 충분하지 않았지만 이것이 내 문제를 해결했습니다! 감사!
Kevin C. Krinke

나는 중간 nginx 프록시에서도 그렇게해야했습니다.
jperelli

2
Nginx를 사용하지 않으면 어떻게됩니까?
Katianie

gitlab 옴니버스 설치를위한 솔루션 최신 버전 12.1
shashwat

많은 수색, 울부 짖음, 울고 난 후에 /var/opt/gitlab/nginx/conf/gitlab-http.conf : (순서대로) 나는 임베디드 설정 파일에있는 것을 발견
kroolk

55

나는 그것을 알아!!! 물론 나는 포스트를 친 직후에 것입니다!

리포지토리에 HTTPS URL을 사용하도록 설정하고 SSH 주소로 변경했으며 모든 것이 완벽하게 작동하기 시작했습니다.


51
이것이 문제의 원인이 아닙니다. 그것은 단지 해결 방법입니다. https가 왜 실패하는지 알고 싶습니다.
Steve Walsh

4
나에게 ssh는 옵션이 아니다. 따라서 @ZincX와 같은 상황에 처한 경우 위의 답변을 참조하십시오.
Tinou

2
이것은 단지 해결 방법입니다. Tinou의 답변은 허용되는 답변이어야합니다.
Ben

1
어떻게 바 꾸었 니?
Dainius Kreivys

많은 사람들이 자신의 웹 서버에 액세스 할 수 없으므로이 정보를 높이 평가합니다.
Matthew

38

https-> git @ ...에서 원격 URL을 변경하는 명령은 다음과 같습니다.

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

여기서 origin은 내 리모컨의 이름입니다 (git remote 및 나오는 것은 origin입니다).


2
의 bitbucket의 경우 ( '복제'버튼) 나는 제거 할 때 문제가 있었다 ssh://에서 ssh://git@<bitbucket-repo>:<port>/dir/to/project.git, 그래서 사람을 조심!
fightlight

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

자식 URL에 이미 "HTTPS //"가 있었지만이 오류가 발생했습니다.

내가 한 것은 push와 함께 옵션 -u를 추가하는 것이 었습니다.

git push -u origin master


4

IIS 7 을 사용 하여 git http/ httpsendpoint 를 호스팅하는 사람들은 :

을 늘려야합니다 uploadReadAheadSize.

시작 인터넷 정보 서비스 (IIS) 관리자

  1. 서버 필드를 펼치십시오

  2. 사이트 확장

  3. 수정하려는 사이트를 선택하십시오.

  4. 기능 섹션에서 두 번 클릭하십시오. Configuration Editor

  5. 아래에서 Section선택 :system.webServer > serverRuntime

  6. 수정 uploadReadAheadSize섹션 (값은 사이 여야합니다 02147483647.)

  7. 딸깍 하는 소리 Apply

  8. 웹 사이트를 다시 시작하십시오


웹 사이트를 다시 시작하려면 기본 웹 사이트를 선택 하고 오른쪽에서 작업 아래 에 중지시작 단추가 있습니다.
jgoeders

이 수정은 여전히 ​​IIS 10에서 필요했습니다.
jgoeders

2

큰 크기의 변경 사항을 푸시하는 동안이 문제가 발생하면 터미널에서 아래 명령을 실행하십시오.

git config --global http.postBuffer 157286400

자세한 내용은 이것을 참조하십시오.


1

https 업로드의 기본 프로토콜 인 'libcurl'에서 오류가 발생합니다. 해결책은 어떻게 든 libcurl을 업그레이드하는 것입니다. 오류에 대한 자세한 내용을 보려면 GIT_CURL_VERBOSE = 1을 설정하십시오.

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

libcurl 문서에 따른 오류 의미 : CURLE_HTTP_RETURNED_ERROR (22)

CURLOPT_FAILONERROR가 TRUE로 설정되고 HTTP 서버가 400보다 큰 오류 코드를 리턴하면 리턴됩니다.

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


1

Linux 컴퓨터에서 git repo를 복제하려고 할 때이 문제가 발생했습니다.

다음 URL은 Windows에서 나를 위해 작동합니다.

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

반면 다음 URL은 Linux 시스템에서 작동하며 URL에 https가 있습니다.

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

1

초기 커밋을 새로운 BitBucket 저장소로 푸시하려고 할 때이 오류 ( 오류 : RPC 실패; result = 22, HTTP 코드 = 413 )가 발생했습니다. BitBucket 저장소에 마스터 분기 가 없으므로 오류가 발생했습니다 . 당신이 사용하는 경우 SourceTree를 당신은 눌러 기원에 마스터 분기를 만들 수 있습니다 망할 놈의 흐름 버튼을 .


1

ssh 링크 대신 https 링크를 사용합니까? 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. 자식 주소를 ssh 링크로 수정하십시오.
git remote set-url origin git@github.com:[user_name]/[project_name].git

원격 저장소 이름을 판별하면 4 단계로 바로 진행하십시오. 이제 푸시 조작을 행복하게 수행 할 수 있습니다.



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


OP는 복제에 대해 묻지 않고 푸시에 대해 묻었습니다.
Owen Blacker

1
OP는 github과의 통신에 대해 질문했습니다. 왜 요점에 대한 대답으로 대답했는지 모르겠습니다.
Jean Jordaan

Hah, fair fair :)
Owen Blacker

0

같은 문제에 직면했다. 필자의 경우 동일한 프로젝트에 액세스 (풀 / 푸시)하는 여러 사용자의 호환되지 않는 GIT 버전이었습니다.

방금 GIT 버전을 업데이트하고 Android 스튜디오 설정의 경로를 업데이트했으며 제대로 작동합니다.

편집하다 -

문제가있는 Windows 용 Git (1.9.5), 업데이트하면 도움이 될 수 있습니다.


0

같은 문제에 직면했지만 git 저장소를 정리하여 해결되었습니다 ( "git clean"을 사용하여 추적되지 않은 파일 정리).


1
git clean을 수행하면 다음 오류가 표시됩니다. fatal : clean.requireForce는 기본값이 true로 설정되고 -i, -n 또는 -f가 지정되지 않습니다. 청소 거부
Chandni

@Chandni와 같은 오류 메시지 git에 직면하는 사람은 스스로 도움이됩니다. git clean -i예를 들어 대화 형 모드에서 시작하십시오.
see through

@seethrough-감사합니다
Chandni

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

https URL을 사용하여 원격 마스터에 푸시했을 때 동일한 문제를 만났고 SSH 주소로 변경했으며 모든 것이 완벽하게 작동하기 시작했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.