如何使用GitHub管理大型数据文件?

24

我有一个大小为120MB的大型文本数据文件(目前只有一个)。

将它放在代码仓库里是不是一个不好的做法?这会影响GitHub上的搜索功能吗?

看起来这是一个坏主意,因为整个源代码只有900行。

但不打算更新这个文件。

可以将其放在Dropbox或Google Docs中,但那样它就与代码仓库分离了。

如果不使用GitHub,是否有更好的管理/备份大型数据文件的方法?


1
我确实看到了,但使用情况有些不同,而且答案也比较旧。 - B Seven
5个回答

7
如果满足以下条件之一,将其放入资料库中:
1- 想要跟踪更改
2- 它实际上是项目的一部分,当人们克隆资料库时希望他们收到它。
如果满足以下条件之一,请勿将其放入资料库中(使用.gitignore将其排除):
1- 它经常更改,但更改不重要且您不想保留历史记录
2- 它在线上可用,或者您可以使其在线上可用并在资料库中放置链接或其他内容,以便人们知道在哪里找到它。
如果没有很多人下载,Dropbox是不错的选择,如果需要进行托管,则Amazon S3是最佳选择。

在使用 .gitignore 进行排除时:仅当你的协作者在他们本地仓库中有相同文件(并且文件名相同)时才这样做。否则,请使用 .git/info/exclude 来进行排除,使用与 .gitignore 相同的语法。 - Dining Philosopher

6
有一些处理这种情况的好方法。例如,当我在进行数据分析项目时,特别是在清理和预处理步骤之后,只分享代码而不分享数据集是很糟糕的(当然对于数据集大小合理就行)。以下是我找到的方法:
  • Git LFS大文件存储 允许您在同一个远程存储库中跟踪、提交和推送二进制文件、数据文件、图像等,如果克隆存储库,则无需拉取所有内容。

  • git-annex 使用它自己的命令,因此您将单独提交存储库和带有附加文件的文件。它看起来非常适合在任何远程上管理这些文件,如硬盘驱动器、S3、Google Drive 等。

有人在这里对比了git-annex和git lfs,而这篇文章则简短地比较了几种方法。

它们都很棒,目前git annex更加成熟,但我使用的是由github开发的git lfs。


3
如果文件不需要进行版本控制,那么我会不愿意将其放在 GitHub 上。
基于讨论的更新...
来自http://git-scm.com/book/en/Customizing-Git-Git-Hooks 引用:
成功运行 git checkout 后,post-checkout 钩子会运行;您可以使用它来为项目环境正确设置工作目录。这可能意味着移动大型二进制文件,您不希望对源代码进行控制,自动生成文档或类似操作。
因此,使用此机制,您可以将外部存储的数据文件下载到工作副本中。

您可以始终从 GitHub 中的源控制文件链接到存储在互联网上的外部文件。 - Rob Kielty
2
这很笨重,但如果有一个像 .gitignore 这样的 git 文件包含链接,那就完美了。它可以是 .gitlinks。每个文件都可以在仓库和远程服务器(如 S3)上有一个位置。一个 git 命令可以将它们下载到仓库中的相应位置。而且 git 会知道不要上传它们,因为它们实际上不是仓库的一部分。 - B Seven
笨重?告诉蒂姆·伯纳斯-李吧 :) - Rob Kielty
但这很有趣。你希望能够只使用git来下载整个解决方案。是这样吗? - Rob Kielty
根据讨论更新的答案。我认为这可能是一个相当优雅的解决方法。 - Rob Kielty
显示剩余2条评论

3

您可以将它放到GitHub上,但我建议将其放在另一个存储库中,并通过子模块链接到它。这将确保文件不会被传输/调整,除非您通过子模块命令明确执行。


2

pages.github.com不是正确的位置。

github:help非常清楚地回答了这个问题(我也在寻找它们)。

https://help.github.com/articles/what-is-my-disk-quota

大型媒体文件

二进制媒体文件与Git不太兼容。对于这些文件,通常最好使用专门为您使用的服务。

对于像视频和音乐这样的大型媒体文件,您应该自己托管文件或使用像Vimeo或Youtube这样的服务。

对于像PSD和3D模型这样的设计文件,Dropbox这样的服务通常非常适用。这就是GitHub的设计师用来保持同步的方式;只有最终的图像资产被提交到我们的存储库中。

https://help.github.com//articles/distributing-large-binaries


2
现在它确实提供了一个答案。 - Sérgio

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