0

私が理解できることから、Gitはファイルの各バージョンのコンテンツをブロブに保存し、ファイル名などのツリーで参照されます.まったく同じコンテンツのファイルが3つある場合、これらの3つのファイルは同じブロブを参照します. ファイルの新しいバージョンには、ファイルのコンテンツ全体を含む新しい BLOB があります。

さて、Git はデルタを保存するのではなく、各バージョンのファイルの内容全体を個別の BLOB オブジェクトに保存するので、これによりストレージが増加しますか? これは、プロジェクトの Git を決定する際に考慮すべき主要な問題ですか? また、バージョンの Git 処理についての私の理解は正しいですか?

4

1 に答える 1

1

あるレベルでは、git はオブジェクトをハッシュによってインデックス付けされた単純なファイルとして保存します。ファイルの新しいバージョンがチェックインされると、新しいハッシュが取得されるため、完全に新しいファイルを含む新しい BLOB が取得されます。

その下のレベルでは、git は BLOB を組み合わせて圧縮し、これらのパック内の「パック」BLOB を作成できます。これらのパックは、デルタ圧縮で圧縮できます。ユーザーが時々入力する必要があることとは別に

git repack -a -d

同様に、プロセスはユーザーとストレージ構造に対して透過的です。

上記のコマンドをリポジトリで試して、ディレクトリのサイズにどのように影響するかを確認してください.git

于 2012-05-17T08:51:51.090 に答える