git - 每次提交的成本

时间:2012-12-15 01:10:20

标签: git

git中每次提交的成本是多少?例如,如果我一次提交更改A和B而不是为每个提交单独的提交,则使用多少(或更少)空间?

2 个答案:

答案 0 :(得分:3)

TLDR:我直观地预测,没有测试,实际使用情况的差异很小。如果你每天要做成千上万的提交,也许你应该更加分析这个。

我的思维过程:每个提交都包含一个提交消息,树和blob。请参阅Git for Computer Scientists以获得精彩的演练。将blob视为一个文件的差异。一般来说,平均而言,我不希望在两个blob中进行更改而不是一个更改。所以你剩下的是一个额外的树对象和一个额外的提交消息。 (树对象是一个子目录和文件名,它告诉git应用blob的位置 - 差异。提交消息就是您认为的那样。)

所以对它进行一些猜测:

  • 树对象可能是10到100个字节
  • 提交消息可能是10到200个字节

根据这些估计,加倍意味着大约20到300个字节。

(注意:此分析不考虑磁盘分配。所以它可能偏离基础!)

答案 1 :(得分:2)

新创建的对象通常是松散的对象。

每个松散对象在磁盘上占用4K最小值。

单个提交至少包含一个提交对象,一个树对象和一个blob对象。

如果允许为空(没有文件更改),则只有一个提交对象,但不经常使用。

因此,12K是最低的!