你如何管理大型Git仓库?

6
我们的一个 git 仓库非常大,导致 git-clone 耗费了很长时间(超过几分钟)。.git 目录大小约为 800M。克隆总是通过 ssh 在 100Mbps 的局域网上进行。即使在本地通过 ssh 克隆也需要几分钟的时间。 是的,我们在仓库中存储数据和二进制文件。
除了将它们移出仓库,还有什么方法可以加快速度吗?
即使将大文件移动出去是一个选项,我们如何在不重写所有历史记录的情况下完成呢?

2
你进行了压缩吗?你的.gitignore设置得足够好了吗?我通过这些考虑从4.3GB的仓库减少到了450MB,真是救了我的命,哈哈。 - Nic
@melee 很遗憾,大部分已经被压缩了。 - Dale Forester
我很想站在你的角度看问题。我们的Git仓库最近已经达到了约2GB。我们的主服务器在几个国家之外,因此连接速度较慢,克隆需要大约30-45分钟。我的意思是:如果你认为你的情况很糟糕,总有很多人比你更糟糕;)。 - Radu Murzea
4个回答

1

我曾经面对过相同的情况,需要通过DSL传输一个约1GB的仓库。我选择了常被遗忘的“偷偷网”:把它放在闪存盘上,开车到城里去交接。虽然这在每个场景下都不是可行的,但你实际上只需要在初始克隆时这么做。之后,传输就会相当合理。


不要忘记 git-bundle 的功能(用于 sneakernet 和其他手动传输方法),这样您只需要在不同的仓库之间传输 新的 位即可。 - Philip Oakley

0

我相当确定你不可能在不重写历史的情况下移动那些二进制文件。

根据这些二进制文件是什么(也许是一些预构建的库或其他内容),你可以为开发人员编写一个小脚本,在检出后下载它们。


0

千兆位...光纤... 不改写历史,你的选择相当有限。

你可以尝试使用git gc命令来清理一下,但我不确定这是否适用于克隆操作。


1
如果他执行了 git gc --aggressive 并推送,那么它会更新远程吗?这可能是一个新问题的基础。 - Nic
1
我前几天在想这个问题... 我想我会写下一个问题。 - Andy

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接