狀況
在 git commit
時,發生類似這樣的錯誤:
error: object file .git/objects/14/bc1d32...cb14f is empty
error: object file .git/objects/14/bc1d32...cb14f is empty
fatal: loose object 14bc1d3...4cb14f (stored in .git/objects/14/bc1d32...cb14f) is corrupt
原因可能是因為終端機沒有正確關閉造成的毀損。可能和我使用 wsl 的狀況有關。記錄一下該如何修復。
修復方法
- 將
.git/objects
目錄備份起來,以免出什麼差錯。 - 執行
git fsck
找出所有錯誤的 object 檔案。 - 將所有列出來的檔案以
rm
指令移除。 git fsck --full
來確認這些檔案是不是都不在了,這時應該會出現error: ref does not point to a valid object!
這樣的新的錯誤,代表現在那些 object 檔案已經被刪除了。git fetch origin
將本機的 git 從遠端進行修復。
問題也隨之修復。