Git LFS和git-annex有何不同?

时间:2016-09-05 20:52:30

标签: git github git-lfs git-annex

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

这两个工具都处理git存储库中的二进制文件。另一方面,GitLab似乎在一年内将git-annex替换为Git LFS

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

2 个答案:

答案 0 :(得分:51)

他们解决了同样的问题。

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

GIT-附件

优点:

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

缺点:

  • 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的文件类型时再次设置。

答案 1 :(得分:25)

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

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

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

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