fatal: did not receive expected object

使用git clone命令複製項目,報錯,如下圖

要了解這個報錯先得了解git clone的過程。git clone命令手下會下載整個倉庫到本地,目錄是./git/objects/pack,裏面有個.pack文件(也可能有多個)。這個報錯猜測應該是由於下載了這個文件後,檢測到此文件有問題,然後導致clone失敗。

這麼猜測的原因是,通過如下操作,可以把.pack下載下來

1.mkdir testProj

2.cd test Proj

3.git init

4.git remote add origin myUrl

5.git pull

這樣,可以把.pack下載下來

然後通過命令

git fsck --full

來驗證.pack的有效性,當.pack正常時,如下圖:

當.pack有問題時,如下圖:

很明顯,.pack中有object的異常,SHA1校驗沒通過

引起這個問題的原因目前還不清楚,一開始懷疑時硬盤問題,可是換了幾個盤clone都沒有成功

但是,換了電腦clone是正常的。

後來從同事那裏拷貝了一份代碼,通過git status .命令輸出如下:

這時候問題就很明顯了,是有三個文件,由於文件名有特殊符號(²),而我的系統沒有識別這個特殊符號,從而產生一個錯誤的文件名。在看看之前的報錯,也是三個報錯,更加確信是這三個文件引起的問題,把這三個文件從git上刪除掉,這個問題就解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章