Gitリポジトリが作業ディレクトリよりもはるかに大きいのはなぜですか?

PortMan

新しいリポジトリを作成し、最初のコミットを作成しました。

作業ディレクトリは2GBです。しかし、.gitディレクトリはなんと15GBです。

コミットが1つしかないgitリポジトリが、作業ディレクトリのほぼ8倍の大きさであるのはなぜですか?

私は何か間違ったことをしていますか?これを修正する方法はありますか?

Nayuki

リポジトリのサイズが大きいのは、「。hg」サブディレクトリの内容を一時的に追加したが、実際の初期コミットではデータを使用しなかったためです。何が起こったのかを段階的に追跡してみましょう。

  1. git init:少量のメタデータを使用して「.git」サブディレクトリを作成します。

  2. git add .:これにより、すべての作業ツリーがGitのインデックス(別名ステージング領域)にコピーされました。つまり、すべての「.hg」ディレクトリファイルを含む、プロジェクト内のすべてのファイルがコピーされました。これらがインデックスに追加されたということは、すべてのファイルの内容が「.git / objects」のオブジェクトストレージデータベースに追加され、「。git / index」ファイルにすべてのファイルへのポインタがあることを意味します。

  3. git reset .hg:これにより、「。hg」サブディレクトリがインデックスから削除されました。ただし、ストレージに追加されたオブジェクトは、他のコミットまたはインデックスエントリそれらを指している可能性があるため、削除されません(Gitは現在、オブジェクトを指す参照の数を追跡していません。参照カウントではなく、ガベージコレクションのトレースで動作します。)

  4. git commit:これは最後に実行したコマンドで、インデックスを新しいコミットにコピーし、それをリポジトリに保存しました。

問題に対処するには:

  • 空白のリポジトリから始めて、「。hg」を慎重に除外して、必要なファイルのみを追加すると、最初からファイルの肥大化を回避できます。

  • 事後に問題を修正したい場合は、実行git gcして、未使用のオブジェクトが削除されることを期待できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

作業ディレクトリのgitリポジトリが.vimrcの変更を認識できるのはなぜですか?

分類Dev

作業ディレクトリなしでgitリポジトリを作成するにはどうすればよいですか?

分類Dev

ホームディレクトリがルートディレクトリよりも大きく作成されるのはなぜですか?

分類Dev

ディレクトリが現在の作業ディレクトリではない場合に、ディレクトリが git 作業ツリーにあるかどうかを確認する方法は?

分類Dev

GetFullPathNameが作業ディレクトリを返すのはなぜですか?

分類Dev

パイプが現在の作業ディレクトリをリセットするのはなぜですか?

分類Dev

GITリポジトリの作業ディレクトリとは何ですか?

分類Dev

現在の作業ディレクトリを変更できないのはなぜですか?

分類Dev

アクティブな作業ディレクトリを持つマウントが「ビジー」になるのはなぜですか?

分類Dev

同じディレクトリまたは親ディレクトリにいるときに、「require」の動作が異なるのはなぜですか?

分類Dev

Git作業ツリーで、親ディレクトリにファイルがあるのはなぜですか?

分類Dev

git stashが作業ディレクトリをダーティな状態のままにするのはなぜですか?

分類Dev

再確認:作業ディレクトリを提供できないのはなぜですか?

分類Dev

なぜ私のpythonは現在の作業ディレクトリをパスに追加しないのですか?

分類Dev

getPropertyメソッドが作業ディレクトリを出力しないのはなぜですか?

分類Dev

getPropertyメソッドが作業ディレクトリを出力しないのはなぜですか?

分類Dev

1つのプロジェクト/フォルダーに2つの.gitディレクトリがあります。作業ツリーでファイルの名前を変更するにはどうすればよいですか?

分類Dev

`$ {$(pwd)}`がzshの現在の作業ディレクトリを出力するのはなぜですか?

分類Dev

なぜgitリポジトリはSVNリポジトリよりもはるかに小さいのですか?

分類Dev

pathlib.Path(__ file __)。parent.parentが作業ディレクトリに敏感なのはなぜですか?

分類Dev

core.autocrlfがinputに設定されているのに、GITが作業ディレクトリへの書き込み時にCRLFをLFに置き換えないのはなぜですか?

分類Dev

gitリポジトリ内にvirtualenvディレクトリがあるのは悪いことですか?

分類Dev

Visual Studio Codeが作業ディレクトリを変更し続けるのはなぜですか?

分類Dev

プル後にマスターの作業ディレクトリがクリーンにならないのはなぜですか?

分類Dev

既存のgit作業リポジトリのベアリポジトリクローンを作成するにはどうすればよいですか?

分類Dev

Perlが作業中のWindowsディレクトリにある私のファイルを認識しないのはなぜですか?

分類Dev

gitリポジトリのクローンを作成しました。それから作業ディレクトリにプルするにはどうすればよいですか?

分類Dev

cronがジョブを実行するときの「作業ディレクトリ」とは何ですか?

分類Dev

lodashには、リポジトリにないディレクトリにあるビルドスクリプトがどのようにありますか?

Related 関連記事

  1. 1

    作業ディレクトリのgitリポジトリが.vimrcの変更を認識できるのはなぜですか?

  2. 2

    作業ディレクトリなしでgitリポジトリを作成するにはどうすればよいですか?

  3. 3

    ホームディレクトリがルートディレクトリよりも大きく作成されるのはなぜですか?

  4. 4

    ディレクトリが現在の作業ディレクトリではない場合に、ディレクトリが git 作業ツリーにあるかどうかを確認する方法は?

  5. 5

    GetFullPathNameが作業ディレクトリを返すのはなぜですか?

  6. 6

    パイプが現在の作業ディレクトリをリセットするのはなぜですか?

  7. 7

    GITリポジトリの作業ディレクトリとは何ですか?

  8. 8

    現在の作業ディレクトリを変更できないのはなぜですか?

  9. 9

    アクティブな作業ディレクトリを持つマウントが「ビジー」になるのはなぜですか?

  10. 10

    同じディレクトリまたは親ディレクトリにいるときに、「require」の動作が異なるのはなぜですか?

  11. 11

    Git作業ツリーで、親ディレクトリにファイルがあるのはなぜですか?

  12. 12

    git stashが作業ディレクトリをダーティな状態のままにするのはなぜですか?

  13. 13

    再確認:作業ディレクトリを提供できないのはなぜですか?

  14. 14

    なぜ私のpythonは現在の作業ディレクトリをパスに追加しないのですか?

  15. 15

    getPropertyメソッドが作業ディレクトリを出力しないのはなぜですか?

  16. 16

    getPropertyメソッドが作業ディレクトリを出力しないのはなぜですか?

  17. 17

    1つのプロジェクト/フォルダーに2つの.gitディレクトリがあります。作業ツリーでファイルの名前を変更するにはどうすればよいですか?

  18. 18

    `$ {$(pwd)}`がzshの現在の作業ディレクトリを出力するのはなぜですか?

  19. 19

    なぜgitリポジトリはSVNリポジトリよりもはるかに小さいのですか?

  20. 20

    pathlib.Path(__ file __)。parent.parentが作業ディレクトリに敏感なのはなぜですか?

  21. 21

    core.autocrlfがinputに設定されているのに、GITが作業ディレクトリへの書き込み時にCRLFをLFに置き換えないのはなぜですか?

  22. 22

    gitリポジトリ内にvirtualenvディレクトリがあるのは悪いことですか?

  23. 23

    Visual Studio Codeが作業ディレクトリを変更し続けるのはなぜですか?

  24. 24

    プル後にマスターの作業ディレクトリがクリーンにならないのはなぜですか?

  25. 25

    既存のgit作業リポジトリのベアリポジトリクローンを作成するにはどうすればよいですか?

  26. 26

    Perlが作業中のWindowsディレクトリにある私のファイルを認識しないのはなぜですか?

  27. 27

    gitリポジトリのクローンを作成しました。それから作業ディレクトリにプルするにはどうすればよいですか?

  28. 28

    cronがジョブを実行するときの「作業ディレクトリ」とは何ですか?

  29. 29

    lodashには、リポジトリにないディレクトリにあるビルドスクリプトがどのようにありますか?

ホットタグ

アーカイブ