Github Push Hatası: RPC başarısız oldu; sonuç = 22, HTTP kodu = 413


130

Şu anda Github ile ilgili aptalca sorun devam ediyor. Yeterli miktarda değişikliğim var (~ 120MB boyutunda), itmeye çalıştığımda şu oluyor:

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

ben zaten halletim

git config http.postBuffer 524288000, bu yüzden sorun bu değil gibi görünüyor. Ne olabilirdi?


3
Gelecekteki ziyaretçiler için, eğer alıyorsanız HTTP code = 0, GitHub dün olduğu gibi kapalı.
StackExchange Kullanıcısı

3
HTTP code = 0Proxy'm engellendiğinde aldım . Http proxy'im github ile çalışıyor, ancak https kurumsal proxy'im için çalışmıyor. Sanırım HTTPS proxy'm NTLM'yi zorlarken HTTP BASIC'i kabul ediyor. Repo kaynak URL'sini https'den http'ye değiştirdim ve benim için çalıştı. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Yanıtlar:


207

413 hatası alırsanız, sorun git ile değil web sunucunuzla ilgilidir . Büyük yükleme dosyalarını engelleyen web sunucunuzdur.

Nginx için çözüm

Sadece yükleyin nginx.confve client_max_body_size 50m;http bloğuna ekleyin (değeri ihtiyaçlarınıza göre değiştirin).

Yürüterek yeni yapılandırmayı kabul etmek için nginx'i sudo service nginx reloadyeniden yükleyin ve kaydetmenizi http üzerinden itmeyi tekrar deneyin.

Apache için Çözüm

Senin içinde httpd.confeklenti LimitRequestBody 52428800bir iç (ihtiyaçlarınıza değerini değiştirerek) <Directory />bloğun. Bunu yaparak, yalnızca tek bir Sanal Ana Bilgisayar veya bir dizin olmak üzere tüm sunucu dosya sisteminin talebini sınırlayabilirsiniz.

Umarım bu yardımcı olur.


1
50 metre benim için yeterli değildi, ama bu sorunumu çözdü! Teşekkürler!
Kevin C. Krinke

Bunu bir ara nginx proxy üzerinde de yapmak zorundaydım.
jperelli

2
Ya Nginx kullanmıyorsanız?
Katianie

gitlab omnibus kurulumu için herhangi bir çözüm ..? en son sürüm 12.1
shashwat

Çok araştırdıktan, küfrettikten ve ağladıktan sonra. (bu sırayla) Gömülü yapılandırma dosyasının şu adreste bulunduğunu buldum: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

56

Bunu anladım!!! Tabii direk vurduktan hemen sonra yapardım!

Depoyu HTTPS url'sini kullanacak şekilde ayarladım, SSH adresine değiştirdim ve her şey kusursuz çalışmaya devam etti.


52
Sorunun nedeni bu değil. Bu sadece geçici bir çözüm. Https'de neden başarısız olduğunu bilmek istiyorum.
Steve Walsh

4
Benim için ssh bir seçenek değil. Öyleyse @ZincX ile aynı durumdaysanız, yukarıdaki cevabıma bakın.
Tinou

2
Bu sadece bir çalışma. Tinou'nun cevabı, kabul edilen cevap olmalıdır.
Ben

1
bunu nasıl değiştirdin?
Dainius Kreivys

Muhtemelen birçok kişinin web sunucularına erişimi yoktur, bu nedenle bu bilgiler çok takdir edilmektedir!
Matthew

38

uzak url'yi değiştirme komutu (https -> git @ ... 'den) böyle bir şeydir

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

origin here, benim uzaktan kumandamın adıdır (git remote ve ortaya çıkan sizin kökeninizdir).


2
Bitbucket durumunda ('Klonla' düğmesi) ' ssh://den çıkarıldığında bir sorun yaşadım ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitBu yüzden dikkatli olun çocuklar!
2018

9

Aynı sorunu yaşadım ama ters proxy kullanıyordum.

Bu yüzden ayarlamak zorundaydım

client_max_body_size 50m; 

her iki yapılandırma dosyasının içinde:

  • gitlab nginx web sunucusunda (önceki cevaplarda söylendiği gibi)
  • aynı zamanda adanmış sunucuda barındırılan nginx ters proxy'de.

gitlab omnibus kurulumu için herhangi bir çözüm ..?
shashwat


Bu çözüm için size teşekkür etmek istedim, tam olarak bu kurulumum vardı.
tjeerdnet

6

Git URL'de zaten "HTTPS //" vardı, ancak bu hatayla karşılaştım.

Tek yaptığım push ile -u seçeneğini eklemekti ve işe yaradı.

git push -u origin master


4

Git / uç noktası barındırmak için IIS 7 kullananlar için :httphttps

Senin uploadReadAheadSize.

İnternet Bilgi Hizmetleri (IIS) Yöneticisini Başlatın

  1. Sunucu alanını genişletin

  2. Siteleri Genişlet

  3. Değişiklik yapmak istediğiniz siteyi seçin.

  4. Özellikler bölümünde çift tıklayın Configuration Editor

  5. SectionSeçin altında :system.webServer > serverRuntime

  6. Değiştirme uploadReadAheadSizebölümü (değer arasında olmalıdır 0ve 2147483647.)

  7. Tıklayın Apply

  8. Web sitesini yeniden başlatın


Yeniden başlatmak için web sitesi I seçilen Varsayılan Web sitesi ve sağ taraftaki altında Eylemler vardır Durdur ve Başlat düğmeleri.
jgoeders

Bu düzeltme IIS 10'da hala gerekliydi.
jgoeders

2

Büyük boyuttaki değişiklikleri iterken bu sorunla karşılaşırsanız, terminalde aşağıdaki komutu çalıştırın.

git config --global http.postBuffer 157286400

Bkz bu fazla ayrıntı için.


1

Hata, https yüklemesinin altında yatan protokol olan 'libcurl'de ortaya çıkar. Çözüm, libcurl'yi bir şekilde güncellemektir. Hatayla ilgili daha fazla ayrıntı almak için GIT_CURL_VERBOSE = 1 olarak ayarlayın

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

Libcurl belgesine göre hatanın anlamı: CURLE_HTTP_RETURNED_ERROR (22)

Bu, CURLOPT_FAILONERROR TRUE olarak ayarlanırsa ve HTTP sunucusu> = 400 olan bir hata kodu döndürürse döndürülür.

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


1

Linux makinesinde bir git deposunu klonlamaya çalıştığımda bu sorunu yaşadım.

aşağıdaki URL pencerelerde benim için çalışıyor

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

oysa aşağıdaki URL Linux makinesinde çalışıyor ve URL'sinde https var

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

1

İlk kaydetmemi yeni bir BitBucket deposuna göndermeye çalıştığımda bu hatayı aldım ( hata: RPC başarısız oldu; sonuç = 22, HTTP kodu = 413 ). Hata benim için oluştu çünkü BitBucket deposunun ana dalı yoktu . SourceTree kullanıyorsanız , Git Flow düğmesine basarak kaynak üzerinde bir ana dal oluşturabilirsiniz .


1

Ssh bağlantıları yerine https bağlantıları kullanıyor musunuz? Https bağlantısı HttpServer'ın (Apache, Ngnix gibi) yükleme boyutuyla sınırlı olduğundan, ssh kullanılırken böyle bir kısıtlama yoktur.

Ssh bağlantısına geçmek için aşağıdaki yöntemi kullanın.

  1. Terminali açın.
  2. Projenizin çalışma dizinine geçin.
  3. Uzak deponun adını alın
$ 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 adresini ssh bağlantısına değiştirin.
git remote set-url origin git@github.com:[user_name]/[project_name].git

Uzak havuz adını belirlerseniz, doğrudan 4. adıma ilerleyin. Artık itme işlemini mutlu bir şekilde yapabilirsiniz.



0

https klonu başarısız oluyor (ssh çalışıyor, aşağıya bakın):

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

Bu çalışıyor: git clone git@gist.github.com:123456.git


OP klon hakkında değil, itme hakkında sordu.
Owen Blacker

1
OP, github ile iletişimi sordu. Neden esaslar hakkında bir cevapla cevap verdim, yine de hiçbir fikrim yok.
Jean Jordaan

Hah, yeterince adil :)
Owen Blacker

0

Aynı sorunla karşı karşıyaydı. Benim durumumda, aynı projeye erişen (çekme / itme) birden çok kullanıcı arasında uyumlu olmayan GIT sürümleriydi.

GIT sürümünü yeni güncelledim ve Android stüdyo ayarlarındaki yolu güncelledim ve benim için iyi çalışıyor.

Düzenle -

Windows için Git (1.9.5) bazı sorunlar yaşıyor, aynı şeyi güncellemek yardımcı olabilir.


0

Aynı sorunla karşı karşıyaydı, ancak git deposunu temizleyerek çözüldü ("git clean" kullanarak izlenmeyen dosyaları temizleyin).


1
git clean yaptığımda şu hatayı gösteriyor: fatal: clean.requireForce varsayılan olarak true ve ne -i, -n ne de -f given; temizlemeyi reddediyor
Chandni

@Chandni ve aynı hata mesajıyla karşılaşan herkes için git size yardımcı olur, git clean -iörneğin etkileşimli modda başlamayı deneyin .
seethrough

@seethrough - Teşekkürler
Chandni

0

Uzak url'yi ssh veya https olarak değiştirmeniz gerekiyor

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

veya

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

Umarım bu yardımcı olur :)


0

https url'yi uzak ana bilgisayara göndermek için kullandığımda, aynı sorunla karşılaştım, SSH adresine değiştirdim ve her şey kusursuz bir şekilde çalışmaya devam etti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.