Git LFS 和 git-annex 有何不同?

How do Git LFS and git-annex differ?

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

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

他们解决了同样的问题。

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

git-附件

Pros:

  • 支持可以存储二进制文件的多个遥控器。
  • 无需 hosting 提供商的支持即可使用(有关详细信息,请参阅 here)。

缺点:

  • Windows beta支持,已经很久了
  • 用户需要为日常工作学习单独的命令
  • github 和 bitbucket 不支持

git-lfs

Pros:

  • 由 github、bitbucket 和 gitlab
  • 支持
  • Most 支持所有 os 的
  • 易于使用。
  • 基于过滤器自动执行

缺点:

技术

git-附件

git-annex 通过在您的 repo 中创建一个已提交的符号链接来工作。实际数据存储到单独的后端(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/lfs/objects 和您的工作存储库中都作为 git 对象存在。所以如果你有 20 GB 的 LFS 文件,你的磁盘上需要 40 GB。使用 git 附件时,文件是符号链接的,因此在这种情况下只需要 20 GB。