我们的一个 git 存储库足够大,以至于 git-clone 需要花费大量时间(超过几分钟)。.git 目录约为 800M。克隆总是在 100Mbps 局域网上通过 ssh 进行。即使通过 ssh 克隆到 localhost 也需要几分钟以上的时间。
是的,我们将数据和二进制 blob 存储在存储库中。
除了将它们移出之外,还有其他方法可以使其更快吗?
即使移动大文件是一种选择,我们怎么能在没有重大中断的情况下重写每个人的历史呢?
我们的一个 git 存储库足够大,以至于 git-clone 需要花费大量时间(超过几分钟)。.git 目录约为 800M。克隆总是在 100Mbps 局域网上通过 ssh 进行。即使通过 ssh 克隆到 localhost 也需要几分钟以上的时间。
是的,我们将数据和二进制 blob 存储在存储库中。
除了将它们移出之外,还有其他方法可以使其更快吗?
即使移动大文件是一种选择,我们怎么能在没有重大中断的情况下重写每个人的历史呢?
我在大约 1GB 的存储库中遇到了同样的情况,需要通过 DSL 传输。我带着经常被遗忘的运动鞋网去:把它放在闪存驱动器上,然后用我的车开着它穿过城镇。这在每种情况下都不实用,但您实际上只需要为初始克隆执行此操作。在那之后,转移是相当合理的。
即使移动大文件是一种选择,我们怎么能在没有重大中断的情况下重写每个人的历史呢?
检查这个答案: git-rm --cached 在他们拉时会删除另一个用户的工作树文件
这个措施,连同向 中添加模式.gitignore
,应该可以帮助您将那些大文件排除在外。
千兆...光纤...不重写历史,你是相当有限的。
您可以尝试一下,git gc
它可能会清理一下,但我不确定这是否是通过克隆完成的。
我相当确定您将无法在不重写历史记录的情况下将这些二进制文件移出。
根据二进制文件是什么(可能是一些预构建的库或其他),您可以有一个小脚本供开发人员在结帐后运行下载它们。