何时缩小Git存储库?

时间:2014-09-21 14:56:21

标签: git

我找到了How to shrink a Git repo的答案,我的问题是什么时候到了正确的时间点。以下是可能有助于理解的背景:

  • 我们有一个小项目,约有10人从事代码工作,4人在德国本土工作,6人在中国工作。
  • 一年前(没有历史记录)使用我们项目的源代码(主要是Java)重新创建了存储库。
  • 我们有一个相对简单的过程
    • 开发人员在功能分支上本地工作(与他人共享)。如有必要,他们会添加一个开发人员分支(也会被推送)以避免数据丢失。
    • 功能完成后,功能分支将在主服务器上合并,并在以后删除。
  • 存储库现在的大小为4.5 GB,这对我们的本地网络来说是一种负担,但在远程工作时则更糟。

什么时候缩小存储库?

1 个答案:

答案 0 :(得分:3)

为了进行比较:Linux repository,这是我所知道的最大的git存储库,拥有近470k的提交和超过4k的贡献者。结账时花了1.15 GB。在git gc --aggressive之后,其大小降至858 MB。

您的存储库中的文件肯定不属于那里。我主要考虑各种二进制文件。如果占用太多空间,这些应该存储在别处。

如果您碰巧存储已编译的文件,则应将其从存储库中删除,并将相应的模式添加到.gitignore文件中。根据经验,不能提交可以从存储库中的其他文件生成并占用空间或是二进制文件的文件。

我刚找到这个工具:BFG Repo-cleaner。它是一个帮助工具,可以让您通过删除有问题的文件来重写历史记录。您可以使用它删除不属于那里的文件 请注意,重写历史意味着大多数提交将获得不同的SHA-1哈希。因此,团队中的每个人都必须同时切换存储库:您生成新的存储库,然后每个人都必须放弃旧的存储库并从现在开始使用新的存储库。

但是:克隆存储库首先不应该成为问题。您应该只克隆一次存储库。如果由于某种原因需要第二个存储库,请从第一个存储库中克隆它,或者只复制它的.git目录。

同样,远程人员只能克隆一次存储库(因此您只需在德国和中国之间传输一次4.5 GB)。然后,中国人可以在他们自己之间进行本地克隆,之后只需切换上游遥控器。

总之,我不知道清理存储库是否值得,因为你不应该经常克隆它。