2011-09-09 36 views
20

混帳拉失敗,以下錯誤的Git拉失敗,壞包包頭錯誤

remote: Counting objects: 146, done. 
remote: fatal: unable to create thread: Resource temporarily unavailable 
error: git upload-pack: git-pack-objects died with error. 
fatal: git upload-pack: aborting due to possible repository corruption on the remote side. 
remote: aborting due to possible repository corruption on the remote side. 
fatal: protocol error: bad pack header 

任何想法如何成功地拉?

+0

[重裝Git存儲庫失敗]的可能副本(http://stackoverflow.com/questions/4826639/repack-of-git-repository-fails) –

回答

45

remote開始的行從遠程系統上運行的git輸出。錯誤:

fatal: unable to create thread: Resource temporarily unavailable 

...有力地表明,你已經在服務器上運行的內存,如果您有這適用於以下情況:

  1. 有很多的大文件,A寶庫,它會導致重新打包占用大量內存。
  2. 限定虛擬存儲器 - 無論是在一般情況下,或只是該帳戶由於ulimit設置

有人建議here是限制的存儲器,其包裝可採取通過登錄到遠程系統的量(作爲那混帳的運行用戶)和做:

git config --global pack.windowMemory "100m" 
git config --global pack.packSizeLimit "100m" 
git config --global pack.threads "1" 
+1

謝謝!我收到與OP相同的錯誤。我嘗試實現pack.windowMemory和pack.SizeLimit配置項目,但我仍然收到錯誤。 當我添加pack.threads「1」時,一切都解決了! –

+1

當我試圖從svn切換到git時,我開始非常熱情。但是從一個模糊的問題走向修復更加模糊的問題,我不確定這個切換的決策有多聰明。 –

+0

我有一個問題,我更改屬性pack.SizeLimit而不是pack.packSizeLimit。這解決了我的問題。非常感謝你!!! – Stargazer

0

更新:這個答案是一個編輯的建議馬克Longair的答案,目前已更新了自己的答案與正確的命名。

實際上,pack.SizeLimit不正確,它是pack.packSizeLimit

當我加入這個選項,它爲我工作:)

我不得不將它設置在本地和遠程存儲庫。

+0

這似乎不是對問題的答案,或者至少是一個完整的答案,請考慮進入更多的細節 –