.git フォルダをクリーンアップするにはどうすればいいですか? プロジェクトディレクトリをクリーンアップしましたが、.git はまだ巨大です 質問する

.git フォルダをクリーンアップするにはどうすればいいですか? プロジェクトディレクトリをクリーンアップしましたが、.git はまだ巨大です 質問する

.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
    

おすすめ記事