14

我目前正在将 git 用于大型存储库(大约 12 GB,每个分支的大小为 3 GB)。该存储库包含许多二进制文件(音频和图像)。

问题是克隆和拉取可能需要很多时间。特别是“解决增量”步骤可能非常非常长。

解决此类问题的最佳方法是什么?

我试图删除 delta 压缩,因为它在这里使用 .gitattributes 中的 delta 选项进行了解释,但它似乎并没有改善克隆持续时间。

提前致谢

凯文

4

2 回答 2

12

2015 年 4 月更新:Git 大文件存储 (LFS)(由 GitHub 提供)。

它使用git-lfs(请参阅git-lfs.github.com)并使用支持它的服务器进行测试:lfs-test-server
您只能将元数据存储在 git repo 中,而将大文件存储在其他地方

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif


原始答案(2012)

对于变化不大的大型二进制文件,一种解决方案是将它们存储在不同的引用中(例如Nexus 存储库),并且仅对声明您需要的版本的文本文件进行版本化。
使用“工件存储库”比在存储库中存储二进制元素更容易(用于比较版本和分支之间的合并,这对所述二进制文件没有多大用处)。

另一个以 git 为中心的解决方案是git-annex

git-annex允许使用 git 管理文件,而无需将文件内容检查到 git 中。
虽然这可能看起来自相矛盾,但在处理比 git 目前可以轻松处理的文件时,它很有用,无论是由于内存、时间或磁盘空间的限制。

但是,它与 Windows 不兼容。

更通用的解决方案可能是git-media,它还允许您将 Git 与大型媒体文件一起使用,而无需将媒体存储在 Git 本身中。

最后,最简单的解决方案是将这些二进制文件隔离在它们自己的git 子模块中,正如您在问题中提到的那样:它不是很令人满意,初始克隆仍需要一些时间,但父 repo 的下一次更新将很短。

于 2012-10-12T09:23:33.457 回答
0

按着这些次序。

1.通过输入以下代码在本地机器上安装 git lfs。

git lfs install

2.现在添加您希望lfs为您管理的文件类型。

git lfs track "*.mp4"
  1. 现在你们都准备好了。继续添加、提交和推送您的文件,不会有任何警告。
于 2018-01-15T06:43:02.100 回答