git值得管理大于500MB的文件

And*_*cia 10 git repository large-files

我会在版本控制下放置大量数据,即目录结构(深度<= 5),数百个文件,大小约为500Mb).

我需要的是一个系统,可以帮助我: - 检测文件是否已被更改 - 检测文件是否被添加/删除 - 克隆整个存储库在另一个位置 - 存储"检查点"并在以后恢复

我不需要sha1进行变化检测,更快的速度是可以接受的.

git值得吗?还有更好的选择吗?

Von*_*onC 10

正如我在" Git限制什么 "中所提到的,Git并不是为了管理大文件(或者是大型二进制文件).

如果你需要,需要Git:

  • 知道文件中实际发生了什么变化.但对于目录级别,其他答案更好(Unison或rsynch)
  • 在开发数据和那些大型资源之间保持紧密接近(即"相同的参考").只有一个参考会有所帮助,但是你需要一个Git的分支,就像git-bigfiles一样有效地管理它们.

注意:仍然使用Git,您可以尝试这种方法

不幸的是,rsync对我们的目的来说也不是很完美.

  • 首先,它不是真正的版本控制系统.如果你想存储文件的多个修订版,你必须制作多个副本,这是浪费,或者xdelta它们,这是繁琐的(并且可能很慢重新组装,并且很难修剪中间版本),或者将它们检入git ,由于你的文件太大,它仍然会融化.
  • 加上rsync真的无法正确处理文件重命名 - 完全没有.

好吧,另外一个想法是什么:让我们将文件拆分成块,并将每个块分别检查为git.
然后git的delta压缩不会有太多的东西可以一次咀嚼,我们只需要发送修改过的块...

基于此Git仓库中gzip --rsyncablePOC.


Joe*_*oey 8

git-annex是解决这个问题的方法.它不是将大文件数据直接存储在git中,而是将其存储在键/值存储中.然后将密钥的符号链接检入git,作为实际大文件的代理.

http://git-annex.branchable.com