4

我知道当 repo 变大时 git 会变慢。
但为什么?
由于 git 将文件存储为单独的目录和.git下的文件,我无法找出操作变慢的原因。让我们看一下提交操作。最近,我克隆了 webkit repo 并从 master 分支,然后我将一个2k文件提交到分支。但我觉得它比我在我的小回购上做的要慢。
因为我没有通读 git 源代码,我猜提交操作会影响将文件存储到磁盘、插入提交日志、更新索引并将HEAD更新为文件的 sha 值。

写入速度很快。
插入速度很快。(我猜,如果插入操作是将日志附加到文件)
更新索引很快。
更新 HEAD 很快。

为什么它很慢?任何人都可以向我说明吗?
谢谢。

一些答案很有帮助但不是很有说服力,提供一些代码片段来支持你会很棒。

4

1 回答 1

5

提交树应该在时间上保持不变,因为它只需要创建一个新的提交对象 ( git write-tree) 并更新HEADref。

我过去做过不同 SCM 的基准测试,git commit确实不受树大小、存储库大小、历史长度等的影响。

于 2013-07-09T08:52:49.503 回答