2012-09-29 184 views
108

我只有一個分支。幾個月來我一直在使用git推送失敗:RPC失敗;結果= 22,HTTP代碼= 411

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 

我用Google搜索,發現問題,如this onethis one,但沒有答案的這些問題解決了我的問題。

大多數的答案暗示分離頭的問題。然而我不認爲我的頭是分離的。我也不認爲我是在錯誤的分支(因爲我只有一個分支...)

我做了幾個實驗弄清楚什麼是錯的,這裏是我得到的結果:

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

我想輸出的最後一行(「快可轉發「)是奇怪的,但我不知道有什麼問題...

+0

'fast-forwardable'意味着您可以將您的本地更改推送到遠程分支,沒有犯罪行爲:-) –

回答

246

如果您嘗試使用HTTP或HTTPS將大量更改推送到Git存儲庫,則可能會收到類似以下錯誤消息作爲錯誤:RPC failed; result=22, HTTP code = 411。這是由Git配置默認值造成的,它將某些HTTP操作限制爲1兆字節。

要改變這種限制本地資源庫

git config http.postBuffer *bytes* 

其中字節是允許的最大字節數內運行。對於〔實施例:

git config http.postBuffer 524288000 

爲500MB(感謝@Hengjie)

+1

正確!謝謝! – CherryQu

+50

例如'git config http.postBuffer 524288000'爲500MB。 – Hengjie

+9

如果您使用的是gitlab,您可能也需要更改您的nginx配置('/ etc/nginx/sites-available/gitlab')。更多信息:https://github.com/gitlabhq/gitlabhq/issues/3099 – DanielB

22

你也可以做到這一點全球 -

git config --global http.postBuffer 524288000 

這將允許所有本地回購協議推高到數據的500MB。

2

如果您在Windows上使用TortoiseGit,最簡單的方法是使用集成配置。

在文件資源管理器中按住鼠標左鍵,選擇TortoiseGit - >設置。接受信息消息。現在,您可以選擇是否僅爲當前項目或系統配置屬性。對於系統級配置按「編輯系統範圍gitconfig」,並在下一行添加到部分[http]

postBuffer = 524288000 

(這部分[http]不存在,創建它)提供

2

無解的工作了我們。我們不得不切換到ssh,而不是HTTPS解決方案。

0

我解決了22錯誤,如下所示: 在「git clone」命令中,我沒有提供用戶:密碼。 克隆工作,但不是推動。 修改的.git/config中像這樣的URL:對於22錯誤 解決方案 URL = http://user:[email protected]/ ... 然後,推動工作。

相關問題