git pull をしたら突然 "fatal: bad object refs/remotes/origin..." というエラーが起きた場合の対処法

結論

1. $ git fsck を実行してエラーの箇所を特定します。

$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (301105/301105), done.
error: refs/remotes/origin/feature/foo: invalid sha1 pointer 0000000000000000000000000000000000000000
error: refs/remotes/origin/feature/bar: invalid sha1 pointer 0000000000000000000000000000000000000000
error: refs/remotes/origin/feature/hoge: invalid sha1 pointer 0000000000000000000000000000000000000000
(以下、省略)

2. エラー箇所を削除します

削除が怖いようでしたら適当な箇所に移動しましょう。

$ rm -rf .git/refs/remotes/origin/feature/foo
$ rm -rf .git/refs/remotes/origin/feature/bar
$ rm -rf .git/refs/remotes/origin/feature/hoge

3. 再度 $ git fsck を実行してエラーが出ないことを確かめます

$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (301467/301467), done.
dangling commit 4523d06bd88242bf35a3eac4acc1930bf4f25ebc
dangling commit 0f3ca0723f3fd637f2f2e8093a5046ef3c99d19d
(中略)
Verifying commits in commit graph: 100% (46896/46896), done.

補足

このエラーが起きる直前、git pull 中に突然の電源断を起こしていましたので、それが原因であることが考えられます。

Powered by はてなブログ