не вдалося натиснути git: RPC не вдалося; результат = 22, код HTTP = 411


127

У мене є лише одне відділення. Кілька місяців я користувався

git push origin master

взяти на себе зобов’язання зі своїм місцевим сховищем Минулої ночі після того, як я вніс невеликі зміни до свого локального сховища та спробував натиснути за допомогою тієї самої команди, я отримав цю помилку:

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

Я гуглив і знайшов такі питання, як це та це , але жодна з відповідей на ці питання не вирішує мою проблему.

Більшість відповідей наводять на проблему відірваної голови . Але я не думаю, що моя голова відсторонена. Я також не думаю, що я на неправильній гілці (оскільки у мене є лише одна гілка ...)

Я зробив кілька експериментів, щоб з’ясувати, що не так, і ось результати, які я отримав:

(1) По-перше, це мій git statusвихід

# 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) Коли я друкую git reflog, я бачу всі свої локальні комісії, але віддалений сховище просто не оновлюється.

(3) Коли я друкую git branch -a, я отримую

* master
  remotes/origin/master

(4) Коли я друкую git remote show origin, я отримую

* 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)

Я думаю, що останній рядок випуску ("швидкий форвард") дивний, але я не впевнений, що не так ...


fast-forwardableзначить, ви можете натиснути свої місцеві зміни на віддалену гілку, нічого злочинного :-)
Максим Полща

Відповіді:


292

Якщо Ви натиснули великий набір змін в сховище Git з HTTP або HTTPS, ви можете отримати повідомлення про помилку , наприклад , як помилка: RPC failed; result=22, HTTP code = 411. Це викликано типовою настройкою конфігурації Git, яка обмежує деякі операції HTTP до 1 мегабайт.

Щоб змінити цей ліміт, запустіть у вашому локальному сховищі

git config http.postBuffer *bytes*

де байти - максимально допустима кількість байтів. Наприклад:

git config http.postBuffer 524288000

За 500 Мб (спасибі @Hengjie)


52
Приклад - git config http.postBuffer 524288000500MB.
Хенджі

9
Якщо ви використовуєте gitlab, вам може знадобитися також змінити конфігурацію nginx ( /etc/nginx/sites-available/gitlab). Більше інформації: github.com/gitlabhq/gitlabhq/isissue/3099
DanielB

що, якщо це показує RPC failed; result=22, HTTP code = 502?
Діпеш Райчана

2
Я все ще отримую наступну помилку git: RPC не вдалося; результат = 22, код HTTP = 504 у бітбукеті на андроїд-студії
DJtiwari

23

Ви також можете це зробити в усьому світі -

git config --global http.postBuffer 524288000

Це дозволить всім місцевим репозиторам висунути до 500 МБ даних.


3

Жодне із запропонованих рішень не працювало на нас. Нам довелося перейти, щоб sshзробити цю роботу замість HTTPSрішення.


2

Якщо ви використовуєте TortoiseGit для Windows, найпростішим способом є використання інтегрованої конфігурації.

У провіднику файлів натисніть ліву кнопку миші, виберіть TortoiseGit -> Налаштування . Прийміть інформаційне повідомлення. Тепер ви можете вибрати, чи хочете ви налаштувати властивість лише для поточного проекту чи системи. Для загальносистемної конфігурації натисніть "редагувати системну gitconfig" та додайте наступний рядок до розділу [http]:

postBuffer = 524288000

(цього розділу [http]не існує, створіть його)


1

Я вирішив помилку 22 таким чином: У команді "git clone" я НЕ постачав користувача: пароль. Клон працював, але не поштовх. Рішення для помилки 22: Змініть .git / конфігуруйте URL так: url = http: // user: pwd @ host / ... Тоді натиск спрацював.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.