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

时间:2012-10-29 02:03:11

标签: git version-control github

我有一个(现在)120 MB的大文本数据文件。

把它放在回购中是不是很糟糕?它会影响GitHub上的搜索功能吗?

这似乎是一个坏主意,因为整个源代码只有900行。

不打算更新文件。

可以将它放在Dropbox或Google Docs上,但它与repo分开。

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

5 个答案:

答案 0 :(得分:4)

有很好的方法来处理这种情况。例如,当我正在处理一个分析数据的项目时,特别是在清理和预处理步骤之后,它很蹩脚地共享代码而不是数据集(当然,对于数据集的大小而言)。这是我发现的:

  • git lfs Large File Storage这允许您跟踪和提交并将二进制文件,数据文件,图像等推送到同一个遥控器,如果克隆存储库,则无需拉动所有内容。

  • git-annex使用自己的命令,因此您将分别提交repo和附件。在任何遥控器(如硬盘驱动器,s3,谷歌驱动器等)上管理这些文件看起来很棒。

Someone has made a nice comparison of git-annex vs git lfs herethis post compares several method in short form.

它们看起来都很棒,git附件目前比较成熟,但git lfs是由我使用的github开发的,这就是我使用git lfs的原因。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

如果文件不需要受版本控制,那么我不愿意把它放在git hub上。

根据讨论更新......

来自http://git-scm.com/book/en/Customizing-Git-Git-Hooks

  

运行成功的git checkout后,post-checkout hook运行;   您可以使用它来正确设置您的工作目录   项目环境。这可能意味着移动大型二进制文件   您不需要源控制,自动生成文档,或   这些方面的东西。

因此,使用此机制,您可以将外部存储的数据文件下载到工作副本中。

答案 3 :(得分:2)

如果符合以下情况,请将其放入仓库:
1-你想跟踪变化
2-它实际上是项目的一部分,你希望人们在克隆回购时收到它

如果出现以下情况,请勿将其放入仓库(使用.gitignore将其排除):
1-它经常变化,但变化没有意义,你不想保留历史记录 2-它可以在线获得,或者你可以在线提供,并在回购中放置链接或其他东西,让人们知道在哪里找到它

Dropbox很不错,如果你没有很多人下载它,亚马逊S3是你托管它的最佳选择。

答案 4 :(得分:2)

pages.github.com是正确的地方? 无

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

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