Git 附件 已经存在了相当长的一段时间,但是从来没有真正获得过发展的势头。 Git LFS 相当年轻,已经得到了 GitHub、 Bitbucket 和 GitLab 的支持。
这两个工具都处理 git 存储库中的二进制文件。另一方面,GitLab 似乎已经在一年内用 Git LFS取代了 废物附属建筑。
他们用 做解决同样的问题。
让我从正反两方面开始,然后讨论技术上的差异。
Git- 附件通过在回购中创建一个提交的符号链接来工作。实际数据被存储到一个单独的后端(S3、 rsync 和许多其他后端)。是用 Haskell 写的。由于使用了符号链接,Windows 用户被迫以一种截然不同的方式使用附件,这使得学习曲线更高。
写入指针文件。Git-lfs api 用于将 BLOB 写入 lfs。由于这个原因,需要一个特殊的 LFS 服务器。Git lfs 使用过滤器,因此您只需要设置 lfs 一次,当您想要指定要推送到 lfs 的文件类型时,还需要再设置一次。
Git 附件的一个主要优点是您可以选择要下载的文件。
由于符号链接的存在,您仍然知道哪些文件是可用的。
例如,假设您有一个充满 ISO 文件的目录。您可以列出这些文件,然后通过键入 git annex get my_file.来决定要下载哪个文件
git annex get my_file.
另一个优点是在签出时不会复制这些文件。 在 LFS 中,LFS 文件作为 git 对象出现在。Git/lfs/object 和您的工作存储库中。因此,如果您有20GB 的 LFS 文件,那么您的磁盘上就需要40GB。对于 git 附件,文件是符号链接的,因此在这种情况下只需要20GB。