3

gitを使用してWebサイトに新しいバックアップシステムを実装しようとしています。仮想プライベートサーバーには、合計20GBのスペースがあり、5GBの空き容量があります。

(私のお気に入りのパラメーターを使用して)実行するgit add .と、ハードドライブをいっぱいにする巨大なgitフォルダーがあります。/var/www.gitignore

.gitディレクトリにはすべてのファイルのバイナリ複製ではなく、ビットに関するビット(メタ情報)が含まれていると予想されるため、これが発生している理由はすぐにはわかりません。

何が起きてる?私のウェブサイトが14GBの場合、.gitディレクトリはさらに14 GBを占有しますか?

4

4 に答える 4

4

使用されるスペースは GIT_DIR + GIT_WORK_TREE に等しい

私の Web サイトが 14 GB の場合、.git ディレクトリはさらに 14 GB を占有しますか?

ケースを非常に単純化するには、はい。非ベア リポジトリでは、Git は追跡対象のすべてのファイル BLOB と、ツリーやコミットなどの他のリポジトリ オブジェクトをGIT_DIRに格納します。また、GIT_WORK_TREEにコピーを保持します。

リポジトリはパックファイルと差分化を使用して、通常のユースケースでこの状況が手に負えなくなるのを防ぎますが、ベアでないリポジトリに 14 GB 以上のデータがある場合、特にそれらのファイルの多くがバイナリ アセットである場合は、その場合、ディスク使用量が 2 倍になる (またはさらに悪化する) 可能性があります。

于 2012-07-23T01:08:38.190 に答える
1

gitリポジトリには、ファイルの履歴全体が含まれています。.gitフォルダーには、作業ディレクトリにあるすべてのビットが含まれるため、サイズが大きくなることが予想されます。圧縮により2倍になることはありませんが、重要になります。また、ファイルを変更すると、履歴が保存されるため、作業ツリーのサイズが変更されていない場合でも、リポジトリの合計サイズが増加します。

于 2012-07-23T01:00:52.857 に答える
1

.gitフォルダーには、リポジトリ内のすべてのファイルと、これらのファイルに加えられたすべての変更の完全な履歴が含まれます。

それはかなり良い圧縮を持っているのでそれは余分な14GBではないかもしれませんが、それは近いでしょう。

于 2012-07-23T01:01:01.890 に答える
1

バージョン管理システムでは、ファイルを変更するときにビットのコピーをどこかに置く必要があります。ファイルが何であるかを知る必要があります。

ほとんどのVCSは、大きなバイナリファイルではうまく機能しません。14GBはすべて人間が書いたものだとは思いませんし、変わると思います。写真は通常、VCSの候補としては不十分です。データベースはさらに悪い候補になります。gitは人間が書いたテキストを管理するように設計されているので、すべての親しいいとこもそうです。

于 2012-07-23T01:02:11.820 に答える