3

gitでの各コミットのコストはいくらですか?たとえば、変更AとBを一度にコミットするのではなく、それぞれに個別のコミットを行う場合、使用されるスペースはどれくらい(または少なく)なりますか?

4

2 に答える 2

3

TLDR: 私は直感的に、テストなしで、実際の使用例では違いが最小限であると予測しています。1 日に何千ものコミットを行っている場合は、おそらくこれについてもっと分析する必要があります。

私の思考プロセス: 各コミットは、コミット メッセージ、ツリー、およびブロブで構成されます。優れたウォークスルーについては、Git for Computer Scientistsを参照してください。ブロブは、1 つのファイルの差分と考えてください。一般に、平均して、1 つではなく 2 つの BLOB を変更しても違いはないと思います。したがって、残っているのは、1 つの追加のツリー オブジェクトと 1 つの追加のコミット メッセージです。(ツリー オブジェクトはサブディレクトリとファイル名であり、BLOB を適用する場所 (差分) を git に指示します。コミット メッセージは、あなたが思っているとおりのものです。)

だからそれにいくつかの推測を入れてください:

  • ツリー オブジェクトは 10 ~ 100 バイトの可能性があります
  • コミット メッセージは 10 ~ 200 バイトの場合があります

これらの見積もりでは、2 倍にするということは、20 ~ 300 バイト多くなるということです。

(注: この分析では、ディスクの割り当ては考慮されていません。したがって、基準から大きく外れている可能性があります!)

于 2012-12-15T01:28:07.073 に答える
2

新しく作成されたオブジェクトは通常、ルーズ オブジェクトです。

ルーズ オブジェクトごとにディスク上で最小 4K が占有されます。

1 つのコミットは、少なくともコミット オブジェクト、ツリー オブジェクト、およびブロブ オブジェクトで構成されます。

空 (ファイルの変更なし) を許可する場合、コミット オブジェクトは 1 つだけですが、これはあまり使用されません。

したがって、12K が最小です。

于 2012-12-15T01:23:45.843 に答える