我找到了How to shrink a Git repo的答案,我的问题是什么时候是做这件事的正确时间点。这是上下文,可能有助于理解:
- 我们有一个小型项目,约有 10 人负责编写代码,其中 4 人在德国本地,6 人在中国远程。
- 该存储库是一年前使用我们项目的源代码(主要是 Java)重新创建的(没有历史记录)。
- 我们有一个相对简单的流程
- 开发人员在本地功能分支上工作(与其他人共享)。如有必要,他们会添加开发人员分支(也会推送)以避免数据丢失。
- 当功能完成后,功能分支会 merge 到主分支上,并在一段时间后删除。
- 存储库现在的大小为 4.5 GB,这对我们的本地网络来说是一个负担,但在远程工作时情况更糟。
什么时候是缩小存储库的合适时机?
最佳答案
为了比较:Linux repository ,这是我所知道的最大的 git 存储库,有近 470k 次提交和超过 4k 贡献者。 checkout 时占用了 1.15 GB。在执行 git gc --aggressive
后,其大小降至 858 MB。
您的存储库中肯定有不属于该存储库的文件。我主要考虑各种二进制文件。如果它们占用太多空间,则应将它们存储在其他地方。
如果您碰巧存储了已编译的文件,则应该将它们从存储库中删除,并将相应的模式添加到您的 .gitignore
文件中。根据经验,不应提交可以从存储库中的其他文件生成且占用空间或二进制文件的文件。
我刚刚找到这个工具:BFG Repo-cleaner 。它是一个帮助工具,可让您通过删除有问题的文件来重写历史记录。您可以使用它来删除不属于那里的文件。
但请注意,重写历史意味着大多数提交将获得不同的 SHA-1 哈希值。因此,团队中的每个人都必须同时切换存储库:您生成新的存储库,然后从现在开始每个人都必须放弃旧的存储库并使用新的存储库。
但是:克隆存储库一开始就不应该有问题。您应该只克隆存储库一次。如果您出于某种原因需要第二个存储库,请从第一个存储库克隆它,或者仅从中复制 .git
目录。
同样,远程人员只能克隆存储库一次(因此您只需在德国和中国之间传输这 4.5 GB 一次)。然后,中国人可以在本地克隆它,然后只需切换上游远程即可。
总之,我不知道清理存储库是否值得,因为您不应该经常克隆它。
关于git - 何时收缩 Git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960484/