Git の object がおかしいというエラーが出た場合は object を表すファイルを消せば良さそう
Git 使ってたんですよ、Git。 コミットするぜー、って思って git add した後に PC がおかしくなって強制終了しちゃったんですよ。
まあそこまではいいですよ、糞 PC 使いにはよくあることです。 いや、よくないけどさ。
でだ。 再起動した後で git status してみたら git add した状態になっていたので、そのまま git commit でコミットしようとしたら以下のようなエラーが発生。
[dev +3 ~1 -0 | +0 ~1 -0]> git commit error: unable to unpack 48b43e04f8a6c36f43e7fd795064be0ea680595d header error: inflateEnd: stream consistency error (no message) fatal: 48b43e04f8a6c36f43e7fd795064be0ea680595d is not a valid object
うぐぐ。 48b43e04f8a6c36f43e7fd795064be0ea680595d という sha1 のオブジェクトがおかしいってことのようです。 git add をやり直してみたりしてもうまくいかず。
オブジェクトを表すファイルを消してみる
どうすりゃいいかよくわかんなかったけど、オブジェクトがおかしいならそのオブジェクトを表すファイルを消して git add しなおせばオブジェクトファイルを作り直してくれてうまくいくんじゃないかなー、ってことでファイルを消して試してみるとエラーが解消されました。
Git のオブジェクトを表すファイルは .git/objects/XX/YYYYYYYYY (XX は sha1 の上位 2 桁、YYYYYYYYY は sha1 から上位 2 桁を除いたもの) にあるので、そのファイルを消せばよいです。
他にも以下のようなエラー (?) が出たりもしたけど、こっちも同様にオブジェクトのファイルを消して git add しなおせば解消しました。
[dev +3 ~1 -0 | +0 ~1 -0]> git commit [dev fatal: loose object bf82f3c3436a1b48c19c80ad7a39c500d9bede2c (stored in .git/objects/bf/82f3c3436a1b48c19c80ad7a39c500d9bede2c) is corrupt
オブジェクトのファイルが壊れた原因によっては単純にファイルを消しても問題が解消しない場合もあると思いますが、git add してコミットしようとしたオブジェクトがおかしい場合は、オブジェクトを表すファイルを消して git add し直せば良さそうです。 (他の解決方法があれば教えてください。)