我目前正在将 git 用于大型存储库(大约 12 GB,每个分支的大小为 3 GB)。该存储库包含许多二进制文件(音频和图像)。
问题是克隆和拉取可能需要很多时间。特别是“解决增量”步骤可能非常非常长。
解决此类问题的最佳方法是什么?
我试图删除 delta 压缩,因为它在这里使用 .gitattributes 中的 delta 选项进行了解释,但它似乎并没有改善克隆持续时间。
提前致谢
凯文
2015 年 4 月更新:Git 大文件存储 (LFS)(由 GitHub 提供)。
它使用git-lfs(请参阅git-lfs.github.com)并使用支持它的服务器进行测试:lfs-test-server:
您只能将元数据存储在 git repo 中,而将大文件存储在其他地方。
原始答案(2012)
对于变化不大的大型二进制文件,一种解决方案是将它们存储在不同的引用中(例如Nexus 存储库),并且仅对声明您需要的版本的文本文件进行版本化。
使用“工件存储库”比在源存储库中存储二进制元素更容易(用于比较版本和分支之间的合并,这对所述二进制文件没有多大用处)。
另一个以 git 为中心的解决方案是git-annex:
git-annex
允许使用 git 管理文件,而无需将文件内容检查到 git 中。
虽然这可能看起来自相矛盾,但在处理比 git 目前可以轻松处理的文件时,它很有用,无论是由于内存、时间或磁盘空间的限制。
但是,它与 Windows 不兼容。
更通用的解决方案可能是git-media,它还允许您将 Git 与大型媒体文件一起使用,而无需将媒体存储在 Git 本身中。
最后,最简单的解决方案是将这些二进制文件隔离在它们自己的git 子模块中,正如您在问题中提到的那样:它不是很令人满意,初始克隆仍需要一些时间,但父 repo 的下一次更新将很短。
按着这些次序。
1.通过输入以下代码在本地机器上安装 git lfs。
git lfs install
2.现在添加您希望lfs为您管理的文件类型。
git lfs track "*.mp4"