3

git中每次提交的成本是多少?例如,如果我一次提交更改 A 和 B,而不是分别提交,那么使用了多少(或更少)空间?

4

2 回答 2

3

TLDR:我直观地预测,无需测试,实际用例的差异很小。如果您每天要进行数千次提交,也许您应该对此进行更多分析。

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

因此,对其进行一些猜测:

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

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

(注意:这个分析没有考虑磁盘分配。所以它可能离基础太远了!)

于 2012-12-15T01:28:07.073 回答
2

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

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

单个提交至少由一个提交对象、一个树对象和一个 blob 对象组成。

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

因此,12K 是最小的!

于 2012-12-15T01:23:45.843 回答