新しいリポジトリを作成し、最初のコミットを作成しました。
作業ディレクトリは2GBです。しかし、.gitディレクトリはなんと15GBです。
コミットが1つしかないgitリポジトリが、作業ディレクトリのほぼ8倍の大きさであるのはなぜですか?
私は何か間違ったことをしていますか?これを修正する方法はありますか?
リポジトリのサイズが大きいのは、「。hg」サブディレクトリの内容を一時的に追加したが、実際の初期コミットではデータを使用しなかったためです。何が起こったのかを段階的に追跡してみましょう。
git init
:少量のメタデータを使用して「.git」サブディレクトリを作成します。
git add .
:これにより、すべての作業ツリーがGitのインデックス(別名ステージング領域)にコピーされました。つまり、すべての「.hg」ディレクトリファイルを含む、プロジェクト内のすべてのファイルがコピーされました。これらがインデックスに追加されたということは、すべてのファイルの内容が「.git / objects」のオブジェクトストレージデータベースに追加され、「。git / index」ファイルにすべてのファイルへのポインタがあることを意味します。
git reset .hg
:これにより、「。hg」サブディレクトリがインデックスから削除されました。ただし、ストレージに追加されたオブジェクトは、他のコミットまたはインデックスエントリがそれらを指している可能性があるため、削除されません。(Gitは現在、オブジェクトを指す参照の数を追跡していません。参照カウントではなく、ガベージコレクションのトレースで動作します。)
git commit
:これは最後に実行したコマンドで、インデックスを新しいコミットにコピーし、それをリポジトリに保存しました。
問題に対処するには:
空白のリポジトリから始めて、「。hg」を慎重に除外して、必要なファイルのみを追加すると、最初からファイルの肥大化を回避できます。
事後に問題を修正したい場合は、実行git gc
して、未使用のオブジェクトが削除されることを期待できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加