它们确实解决了相同的问题。
首先我会从正反两个方面讲,然后再进入技术上的区别。
git-annex通过在您的存储库中创建符号链接来工作。实际数据存储在单独的后端(S3、rsync和其他许多)。它是用Haskell编写的。由于它使用符号链接,Windows用户被迫以更不同的方式使用annex,这使得学习曲线更高。
写入指针文件。使用git-lfs API将BLOBs写入lfs。由于此原因需要一个特殊的LFS服务器。Git LFS使用过滤器,因此您只需设置一次LFS,然后再次指定要推送到LFS的文件类型时就可以了。
Git Annex的一个主要优点是你可以选择想要下载的文件。
由于符号链接,您仍然知道哪些文件可用。
例如,假设您有一个充满ISO文件的目录。您可以列出文件,然后通过输入以下命令来决定要下载哪个文件:git annex get my_file.
另一个优点是文件不会在您的checkout中重复。使用LFS,lfs文件既存在于.git/lfs/objects中的git对象中,也存在于您的工作库中。因此,如果您有20GB的LFS文件,则需要40GB的磁盘空间。而对于git annex,文件是通过符号链接实现的,所以在这种情况下只需要20GB。