67

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

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

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

2 回答 2

69

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

让我从赞成/反对开始,然后我将讨论技术差异。

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

于 2016-09-05T22:22:25.067 回答
43

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

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

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

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

于 2017-04-07T11:32:43.587 回答