błąd git push: błąd RPC; wynik = 22, kod HTTP = 411

127

Mam tylko jedną gałąź. Od kilku miesięcy stosuję

git push origin master

zobowiązać się do mojego lokalnego repozytorium. Ostatniej nocy po wprowadzeniu niewielkich zmian w moim lokalnym repozytorium i próbie wypychania za pomocą tego samego polecenia otrzymałem ten błąd:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Przeszukałem go i znalazłem pytania takie jak to i to , ale żadna z odpowiedzi na te pytania nie rozwiązuje mojego problemu.

Większość odpowiedzi sugeruje problem z odłączoną głową . Jednak nie sądzę, żeby moja głowa była oderwana. Nie uważam też, że jestem na złej gałęzi (ponieważ mam tylko jedną gałąź ...)

Wykonałem kilka eksperymentów, aby dowiedzieć się, co jest nie tak, a oto wyniki, które otrzymałem:

(1) Najpierw jest mój git statuswynik

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2) Kiedy piszę git reflog, widzę wszystkie moje lokalne zatwierdzenia, ale zdalne repozytorium po prostu nie jest aktualizowane.

(3) Kiedy piszę git branch -a, otrzymuję

* master
  remotes/origin/master

(4) Kiedy piszę git remote show origin, otrzymuję

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

Myślę, że ostatni wiersz wyjścia („przewijanie do przodu”) jest dziwny, ale nie jestem pewien, co jest nie tak ...

Zening Qu
źródło
fast-forwardableoznacza, że ​​możesz
przesłać

Odpowiedzi:

292

Jeśli próbujesz wcisnąć duży zbiór zmian do repozytorium Git z HTTP lub HTTPS, może pojawić się komunikat o błędzie, takie jak błąd: RPC failed; result=22, HTTP code = 411. Jest to spowodowane domyślną konfiguracją Git, która ogranicza niektóre operacje HTTP do 1 megabajta.

Aby zmienić ten limit, uruchom w swoim lokalnym repozytorium

git config http.postBuffer *bytes*

gdzie bajty to maksymalna dozwolona liczba bajtów. Na przykład:

git config http.postBuffer 524288000

Za 500 MB (dzięki @Hengjie)

Maksym Polshcha
źródło
52
Przykład dotyczy git config http.postBuffer 524288000500 MB.
Hengjie
9
Jeśli używasz gitlab, może być konieczna zmiana konfiguracji nginx ( /etc/nginx/sites-available/gitlab). Więcej informacji: github.com/gitlabhq/gitlabhq/issues/3099
DanielB
co jeśli to się pokaże RPC failed; result=22, HTTP code = 502?
Dipesh Raichana
2
Nadal otrzymuję następujący błąd git: RPC nie powiodło się; wynik = 22, kod HTTP = 504 w bitbucket na Android Studio
DJtiwari
23

Możesz to również zrobić globalnie -

git config --global http.postBuffer 524288000

Dzięki temu wszystkie lokalne repozytoria będą mogły przesłać do 500 MB danych.

jdr0dn3y
źródło
3

Żadne z dostarczonych rozwiązań nie zadziałało. Musieliśmy przejść na, sshaby to zadziałało zamiast HTTPSrozwiązania.

javaauthority
źródło
2

Jeśli używasz TortoiseGit dla Windows, najłatwiejszym sposobem jest użycie zintegrowanej konfiguracji.

W eksploratorze plików naciśnij lewy przycisk myszy, wybierz TortoiseGit -> Ustawienia . Zaakceptuj wiadomość informacyjną. Teraz możesz wybrać, czy chcesz skonfigurować właściwość tylko dla bieżącego projektu, czy systemu. Aby skonfigurować systemową konfigurację, naciśnij „edytuj systemowy gitconfig” i dodaj następną linię do sekcji [http]:

postBuffer = 524288000

(jeśli sekcja [http]nie istnieje, utwórz ją)

Errepunto
źródło
1

Rozwiązałem błąd 22 w następujący sposób: W poleceniu „git clone” NIE podałem użytkownika: hasło. Klon zadziałał, ale nie popchnął. Rozwiązanie dla błędu 22: Zmodyfikuj adres URL .git / config w następujący sposób: url = http: // user: pwd @ host / ... Następnie wypychanie zadziałało.

Rob Lassche
źródło