の.git/オブジェクト誤って生成された数百メガバイトのゴミを削除した後でも、私の Rails プロジェクト ディレクトリ内のファイルは依然として膨大です。
git add -A
、および他のコマンドを試して、インデックスを更新し、存在しないファイルを削除しました。おそらく間違っていると思いますが、ディレクトリ内の 2 文字の名前を持つファイルは BLOB です。以前のコミットにロールバックしようとしましたが、うまくいきませんでした。
このディレクトリをクリーンアップするにはどうすればいいでしょうか?
ベストアンサー1
ファイルを追加してから削除した場合、BLOB はまだ存在しますが、ぶら下がった状態になります。 は、
git fsck
到達できない BLOB を一覧表示し、git prune
それらを削除します。ファイルを追加してコミットし、その後 でロールバックした場合
git reset --hard HEAD^
、それらは少し深いところまで行き詰まっています。git fsck
は、ブランチの再ログ保持しています。適切な履歴内にあるオブジェクトのみが残るようにする方法の 1 つを次に示します。git reflog expire --expire=now --all git repack -ad # Remove dangling objects from packfiles git prune # Remove dangling loose objects
リポジトリをクローンする方法もあります。この方法では、到達可能なオブジェクトのみが保持されます。ただし、ぶら下がっているオブジェクトがパックされた場合 (多くの操作を実行した場合、git が自動的にパックする可能性があります)、ローカル クローンにはパック ファイル全体が保持されます。
git clone foo bar # bad git clone --no-hardlinks foo bar # also bad
Git に新しいパックを計算させるには、プロトコルを指定する必要があります。
git clone file://foo bar # good