主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2016/11/07
git status
しようとしたら、「fatal: index file smaller than expected」と怒られた。
原因は、多分仮想マシンが落ちたからだと思うけれど、直し方をメモしておきます。
以下作業ログ
リポジトリディレクトリは ~/lepus
とします。
$ git status
fatal: index file smaller than expected
$ cd ..
$ cp -r lepus lepus-backup
$ cd lepus
$ rm .git/index
と、ここまですると治るみたいだけれども、残念ながらまだエラーがでてた。
$ git add -A
error: object file .git/objects/a1/a1b2c3... is empty
なんか壊れてるっぽいので、empty なファイルを 1 つ 1 つ直していく。
$ git fsck --full
(略)
error: object file .git/objects/a1/a1b2c3... is empty
$ rm .git/objects/a1/a1b2c3
調べると過去の履歴から復元しているのが多かったけど、
今回 commit してないものが壊れたので、履歴は存在しない。
ということで、別のやり方で。
$ git fsck --name-objects | grep missing
(↓多分こんな感じだった)
missing blob a1b2c3.... (app/controller/users_controller.rb)
$ git rm --cached app/controllers/users_controller.rb
$ git add app/controller/users_controller.rb
これを繰り返して、なくなったら修正完了。
合ってるかわからないけども、とりあえずちゃんとなってるからいいかな。
参考: