Git LFS 和 Git 附件有什么不同?

Git 附件 已经存在了相当长的一段时间,但是从来没有真正获得过发展的势头。
Git LFS 相当年轻,已经得到了 GitHub、 Bitbucket 和 GitLab 的支持。

这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎已经在一年内用 Git LFS取代了 废物附属建筑

  • 技术上有什么不同?
  • 他们解决同样的问题吗?
13120 次浏览

他们用 解决同样的问题。

让我从正反两方面开始,然后讨论技术上的差异。

废物附属建筑

优点:

  • 支持多个远程,可以存储二进制文件。
  • 可以在没有宿主提供商支持的情况下使用(有关详细信息,请参阅 给你)。

缺点:

  • Windows 支持 beta 版,并且已经有很长一段时间了
  • 用户需要为日常工作学习单独的命令
  • 不受 github 和 bitbucket 的支持

Git-lfs

优点:

  • 由 github,bitbucket 和 gitlab 支持
  • 所有操作系统都支持
  • 很好用。
  • 基于过滤器的自动化

缺点:

技术性的

废物附属建筑

Git- 附件通过在回购中创建一个提交的符号链接来工作。实际数据被存储到一个单独的后端(S3、 rsync 和许多其他后端)。是用 Haskell 写的。由于使用了符号链接,Windows 用户被迫以一种截然不同的方式使用附件,这使得学习曲线更高。

Git-lfs

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

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

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

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

另一个优点是在签出时不会复制这些文件。 在 LFS 中,LFS 文件作为 git 对象出现在。Git/lfs/object 和您的工作存储库中。因此,如果您有20GB 的 LFS 文件,那么您的磁盘上就需要40GB。对于 git 附件,文件是符号链接的,因此在这种情况下只需要20GB。