我目前正在使用 git 来构建大型存储库(大约 12 GB,每个分支的大小为 3 GB)。
该存储库包含大量二进制文件(音频和图像)。
问题是克隆和拉取可能需要很多时间。
特别是“解决增量”步骤可能非常非常长。
解决此类问题的最佳方法是什么?
我尝试删除增量压缩,正如它所解释的那样here https://stackoverflow.com/a/7153033/1393890在 .gitattributes 中使用 delta 选项,但它似乎并没有提高克隆持续时间。
提前致谢
Kevin
2015 年 4 月更新:Git 大文件存储 (LFS) https://github.com/blog/1986-announcing-git-large-file-storage-lfs(由 GitHub 提供)。
It uses git-lfs https://github.com/github/git-lfs (see git-lfs.github.com https://git-lfs.github.com/)并使用支持它的服务器进行了测试:lfs-测试服务器 https://github.com/github/lfs-test-server:
您只能将元数据存储在 git 存储库中,而将大文件存储在其他地方.
原始答案(2012)
针对大型二进制文件的一种解决方案没有太大改变,是将它们存储在不同的引用中(例如Nexus 存储库 http://www.sonatype.org/nexus/),并且版本仅是一个文本文件declares您需要哪个版本。
使用“工件存储库”比将二进制元素存储在sourcerepo(用于比较版本和分支之间的合并,这对于所述二进制文件没有多大用处)。
另一个更以 git 为中心的解决方案是git 附件 http://git-annex.branchable.com/:
git-annex
允许使用 git 管理文件,而无需将文件内容检查到 git 中。
虽然这看起来有些矛盾,但在处理大于 git 当前可以轻松处理的文件时,无论是由于内存、时间还是磁盘空间的限制,它都是有用的。
但它与 Windows 不兼容。
更通用的解决方案可能是git 媒体 https://github.com/schacon/git-media,这还允许您将 Git 与大型媒体文件一起使用,而无需将媒体存储在 Git 本身中。
最后,最简单的解决方案是将这些二进制文件隔离在自己的文件中git 子模块 http://git-scm.com/book/en/Git-Tools-Submodules正如您在问题中提到的:这不是很令人满意,并且初始克隆仍然需要时间,但是父存储库的下一次更新将会很短。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)