gitでの各コミットのコストはいくらですか?たとえば、変更AとBを一度にコミットするのではなく、それぞれに個別のコミットを行う場合、使用されるスペースはどれくらい(または少なく)なりますか?
2 に答える
TLDR: 私は直感的に、テストなしで、実際の使用例では違いが最小限であると予測しています。1 日に何千ものコミットを行っている場合は、おそらくこれについてもっと分析する必要があります。
私の思考プロセス: 各コミットは、コミット メッセージ、ツリー、およびブロブで構成されます。優れたウォークスルーについては、Git for Computer Scientistsを参照してください。ブロブは、1 つのファイルの差分と考えてください。一般に、平均して、1 つではなく 2 つの BLOB を変更しても違いはないと思います。したがって、残っているのは、1 つの追加のツリー オブジェクトと 1 つの追加のコミット メッセージです。(ツリー オブジェクトはサブディレクトリとファイル名であり、BLOB を適用する場所 (差分) を git に指示します。コミット メッセージは、あなたが思っているとおりのものです。)
だからそれにいくつかの推測を入れてください:
- ツリー オブジェクトは 10 ~ 100 バイトの可能性があります
- コミット メッセージは 10 ~ 200 バイトの場合があります
これらの見積もりでは、2 倍にするということは、20 ~ 300 バイト多くなるということです。
(注: この分析では、ディスクの割り当ては考慮されていません。したがって、基準から大きく外れている可能性があります!)
新しく作成されたオブジェクトは通常、ルーズ オブジェクトです。
ルーズ オブジェクトごとにディスク上で最小 4K が占有されます。
1 つのコミットは、少なくともコミット オブジェクト、ツリー オブジェクト、およびブロブ オブジェクトで構成されます。
空 (ファイルの変更なし) を許可する場合、コミット オブジェクトは 1 つだけですが、これはあまり使用されません。
したがって、12K が最小です。