Git LFS和git-annex有何不同?

Ste*_*nus 44 git github git-annex git-lfs

git-annex已经存在很长一段时间了,但从来没有真正获得动力.
Git LFS相当年轻,已经得到了GitHub,Bitbucket和GitLab的支持.

这两个工具都处理git存储库中的二进制文件.另一方面,GitLab似乎在一年内用Git LFS取代了git-annex.

  • 有哪些技术差异?
  • 他们解决了同样的问题吗?

gre*_*awk 56

他们确实解决了同样的问题.

让我从pro/con开始,然后我将进入技术差异.

git的附件

优点:

  • 支持可以存储二进制文件的多个遥控器.
  • 可以在没有托管服务提供商的支持下使用(有关详细信息,请参阅此处)

缺点:

  • Windows支持测试版,并且已经很长时间了
  • 用户需要学习用于日常工作的单独命令
  • github和bitbucket不支持

GIT-LFS

优点:

  • 由github,bitbucket和gitlab提供支持
  • 大多数支持所有操作系统
  • 使用方便.
  • 基于过滤器自动化

缺点:

技术

git的附件

git-annex的工作原理是在你的repo中创建一个提交的符号链接.实际数据存储在单独的后端(S3,rsync和许多其他后端).它是用haskell编写的.由于它使用符号链接,因此Windows用户被迫以非常不同的方式使用附件,这使得学习曲线更高.

GIT-LFS

指针文件被写入.git-lfs api用于将BLOB写入lfs.由于这个原因,需要一个特殊的LFS服务器.Git lfs使用过滤器,因此您只需设置一次lfs,并且当您想要指定要推送到lfs的文件类型时再次使用过滤器.


Kar*_*ner 29

git附件的一个主要优点是您可以选择要下载的文件.

由于符号链接,您仍然知道哪些文件可用.

例如,假设您有一个充满ISO文件的目录.您可以列出文件,然后键入以下内容来决定要下载哪个文件:git annex get my_file.

另一个优点是文件不会在结帐时重复.对于LFS,lfs文件作为git对象存在于.git/lfs/objects和工作存储库中.因此,如果您有20 GB的LFS文件,则磁盘上需要40 GB.使用git附件时,文件是符号链接的,因此在这种情况下只需要20 GB.

  • 感谢您提及LFS的数据重复,我没有看到其他任何地方提到过.我没有理由不重复我的媒体目录磁盘使用. (8认同)
  • GVFS目前似乎只是Windows. (2认同)