git - 较长的提交历史记录是否会导致克隆 Git 存储库的速度变慢?

标签 git repository commit git-commit

我有一个具有很长提交历史记录的 Git 存储库。为了简单起见,假设我的旧存储库仅包含提交 COMMIT-1...COMMIT-10000 的主分支。我想知道如果我通过创建包含所有修改的大型“压缩”提交(COMMIT 1*)来创建给定存储库的“副本”,是否可以减少克隆所需的时间和本地存储库所需的空间远。

修改示意图:

CURRENT REPO     ----->     NEW REPO
COMMIT-10000                COMMIT-1*
     |
    ...
     |
  COMMIT-1

这实际上会提高克隆速度或内存要求吗?

有没有普遍适用的解决方案来改善这些问题?

最佳答案

存储库中的提交历史记录;更多提交 = 更多历史记录 = 更多总体数据 = 更多总体时间。所以:是的,如果您创建一个新存储库,仅一次提交保存所有文件的一个快照,那么这将始终比您的旧存储库(包含 10,000 个快照保存所有文件)至少小一点。

它能缩小多少,使用起来会快多少,这些都很难预测。因为提交尽可能地重用早期提交的文件,所以它只能稍微小一点。因为他们只尽可能地重用早期提交的文件,所以它可能会小 10,000 倍,甚至更多。

例如,假设第一次提交包含 10,001 个不同的文件,并且每个后续提交快照都会删除一个文件,保留其余文件。那么新存储库将在一个快照中包含一个文件,而旧提交将在 10,000 个快照中包含 10,001 个文件。

在实践中,找出答案的唯一方法就是尝试。

关于git - 较长的提交历史记录是否会导致克隆 Git 存储库的速度变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69492024/

相关文章:

git - 如何知道远程存储库中的所有项目?

每个作者在所有分支上的 Git 提交数

git - 是否可以在 git 中 merge 提交?

MySQL - 如何更改一个特定数据库的默认自动提交?

git - 在 'git commit' 之前写入 git 提交信息

svn - 存储库中的分支是什么?

Windows 10 CLI 终端上的 git log 输出编码问题

推/pull 后 Git 静默失败

git - 我的 Git 对象包文件夹非常重(push --force 之后)

mercurial - 如何在 Mercurial 中添加远程存储库?