发布于 2016-02-23 21:21:28
与集中式系统相比,Git (和其他分布式系统)的一个特点是每个存储库包含项目的整个历史。假设你创建了一个100MB的文件,以一种不能很好压缩的方式修改了100次。您最终将拥有一个10 GB的存储库。这意味着每个克隆将下载10 GB的数据,占用每台进行克隆的机器上10 GB的磁盘空间。更令人沮丧的是:即使你git rm
了这些大文件,你仍然需要下载这10 GB的数据。
将大文件放在像git-lfs这样的单独系统中,只允许您在存储库中存储指向文件的每个版本的指针,因此每个克隆只会为每个版本下载一小部分数据。结帐将只下载您正在使用的版本,即上面示例中的100MB。因此,您将使用服务器上的磁盘空间,但会节省客户端上的大量带宽和磁盘空间。
除此之外,git gc
(内部为git repack
)使用的算法并不总是能很好地处理大文件。Git的最新版本在这方面取得了进展,它应该工作得相当好,但使用包含大文件的大型存储库可能最终会给您带来麻烦(比如没有足够的RAM来重新打包存储库)。
https://stackoverflow.com/questions/35575400
复制相似问题