如何管理大型git存储库?

如何管理大型git存储库?,git,version-control,size,logistics,Git,Version Control,Size,Logistics,我们的一个git存储库足够大,以至于一个git克隆需要花费大量的时间(超过几分钟)。.git目录约为800M。克隆总是通过ssh在100Mbps lan上进行。甚至通过ssh克隆到本地主机也需要几分钟以上的时间 是的,我们在存储库中存储数据和二进制blob 除了把它们搬出去,还有别的办法让它更快吗 即使移动大文件是我们的一种选择,我们如何在不中断重写每个人的历史记录的情况下进行呢?我敢肯定,如果不重写历史记录,您将无法将这些二进制文件移出 根据二进制文件是什么(可能是一些预构建的库或其他什么),

我们的一个git存储库足够大,以至于一个git克隆需要花费大量的时间(超过几分钟)。.git目录约为800M。克隆总是通过ssh在100Mbps lan上进行。甚至通过ssh克隆到本地主机也需要几分钟以上的时间

是的,我们在存储库中存储数据和二进制blob

除了把它们搬出去,还有别的办法让它更快吗


即使移动大文件是我们的一种选择,我们如何在不中断重写每个人的历史记录的情况下进行呢?

我敢肯定,如果不重写历史记录,您将无法将这些二进制文件移出

根据二进制文件是什么(可能是一些预构建的库或其他什么),您可以有一个小脚本供开发人员运行签出后下载它们。

。。。纤维 如果不改写历史,你就相当有限

您可以尝试使用
git-gc
它可能会稍微清理一下,但我不确定克隆是否可以做到这一点

即使移动我们的大文件是一种选择,我们怎么做呢 在没有重大干扰的情况下改写每个人的历史

检查以下答案:


这一措施,再加上向
.gitignore
中添加模式,应该可以帮助您将那些大文件保存在外。

我在使用~1GB存储库时也遇到了同样的情况,需要通过DSL传输。我带着经常被遗忘的sneakernet:把它放在闪存驱动器上,然后用我的车开着它穿过城镇。这在任何情况下都不实用,但实际上您只需要为初始克隆执行此操作。在那之后,传输是相当合理的。

您压缩了吗?您的
.gitignore
设置是否充分?考虑到这些因素,我从4.3gb回购到450mb,这救了我的命,haha@melee可悲的是,大多数人已经被压缩了,我很想站在你的立场上。我们的git回购最近已达到约2GB。我们的主要服务器在几个国家之外,所以连接速度较慢,所以克隆大约需要30-45分钟。我想说的是:如果你认为你的处境很糟糕,那么总有很多人的处境更糟;)。如果他执行了git gc--aggressive并按下按钮,它会更新遥控器吗?可能是一个新问题的基础前几天我在想。。。我想我会草草提出一个问题。别忘了git bundle的
功能(适用于sneakernet和其他手动传输方法),所以你只需要在不同的回购协议之间传输新的比特