git object files corrupt error

Posted on:2024年4月14日 at 下午09:00
git object files corrupt error

狀況

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 的狀況有關。記錄一下該如何修復。

修復方法

  1. .git/objects 目錄備份起來,以免出什麼差錯。
  2. 執行 git fsck 找出所有錯誤的 object 檔案。
  3. 將所有列出來的檔案以 rm 指令移除。
  4. git fsck --full 來確認這些檔案是不是都不在了,這時應該會出現 error: ref does not point to a valid object! 這樣的新的錯誤,代表現在那些 object 檔案已經被刪除了。
  5. git fetch origin 將本機的 git 從遠端進行修復。

問題也隨之修復。