💬
破損した Git リポジトリの復旧手順
はじめに
Git で稀にこんなエラーが出ます。
error: object file .git/objects/xx/yyyyyy is empty
特に VSCode の DevContainer で子ディレクトリをルートとして開いたりしていると遭遇する気がします。
毎度復旧方法を調べるのも面倒なので、手順をまとめておきます。
手順
破損リポジトリをバックアップ
まず、壊れたリポジトリをディレクトリごと別名でバックアップしておきます。
mv your-project your-project-backup
新しくクローン
復旧したいリポジトリを新しくクローンします。
git clone <リポジトリURL> your-project
必要に応じてブランチも切り替えておきます。
古い作業ファイルをコピー
壊れたリポジトリがあるディレクトリから新しくクローンしたリポジトリへファイルをコピーします。
rsync -av --progress your-project-backup/ your-project/ --exclude='.git'
まとめ
色々頑張るよりクローンし直してコピーするのが一番確実だと思います。
Discussion