2012-12-11 71 views
2

在推動一個Git倉庫從Ubuntu的服務器到另一個Ubuntu的服務器,我收到以下錯誤:混帳推崩潰「膨脹返回-551」

Pushing to [email protected]:yyy 
Enter passphrase for key '/home/ngrislain/.ssh/id_rsa': 
Counting objects: 88, done. 
Compressing objects: 100% (50/50), done. 
error: inflate returned -551), 22.15 MiB | 1.13 MiB/s 
error: pack-objects died of signal 13MiB | 1.10 MiB/s 
error: failed to push some refs to '[email protected]:yyy' 

我的磁盤未滿,我仍然可以拉... 有沒有人明白這一點?

感謝,

+0

是否可以嘗試克隆它,進行提交和推送,以查看問題是否不會來自本地回購?否則,服務器端會出現某種類型的錯誤,如http://git.661346.n2.nabble.com/Massive-repository-corruptions-td5285660.html中所述。 – VonC

回答

1

簡短的回答:你的遠程倉庫被打破。

git倉庫中的大部分對象(提交,舊文件內容等)都打包在.pack文件中。每當git需要訪問這些對象時,首先需要解壓它們。如果打包文件損壞,git不再能夠訪問這些對象,並且不愉快。

您試圖推送到遠程存儲庫,這似乎包含這樣一個損壞的包文件。 遠程端需要解壓縮它,但無法這樣做。因此它無法整合你的推動。

您需要修復您的遠程存儲庫。由於git是一個分佈式VCS,一種方法是通過從你自己的倉庫克隆來在服務器上創建一個新的倉庫。

根據詳細程度你有興趣,你也可以看看git-unpack-objects man頁面或在zlib.c Git的源碼int git_inflate(...),其中包含了失敗的通話膨脹。

還有一個GitFaq關於如何修復損壞的存儲庫。