git-annex已经存在了很长一段时间,但从未真正获得动力 Git LFS相当年轻,已经得到了GitHub,Bitbucket和GitLab的支持。
这两个工具都处理git存储库中的二进制文件。另一方面,GitLab似乎在一年内将git-annex替换为Git LFS。
答案 0 :(得分:51)
他们做解决了同样的问题。
让我从pro / con开始,然后我将进入技术差异。
git-annex的工作原理是在你的repo中创建一个提交的符号链接。实际数据存储在单独的后端(S3,rsync和许多其他后端)。它是用haskell编写的。由于它使用符号链接,Windows用户被迫以不同的方式使用附件,这使得学习曲线更高。
写入指针文件。 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。