0

git-lfs 网站上的功能概述说

Git 大文件存储 (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件,同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。

但这句话让我感到困惑,似乎与模棱两可的附图格格不入。

大型(托管)文件是否替换为本地和远程存储库上的链接,还是仅在远程存储库上?当有人使用 git-lfs 托管文件克隆远程仓库时会发生什么?

4

1 回答 1

0

您可以阅读规范中的详细信息。它的工作原理如下:

大文件(通过 lfs 跟踪的文件)绝不是存储库的一部分。相反,只有小指针文件被写入其中。

如果你提交一个大文件,lfs 将拦截并用指针替换文件。文件本身保存到.git/lfs/objects/{OID-PATH}.

如果你推送一个大文件.git/lfs/objects/{OID-PATH},将会同步到存储这些大文件的存储。

如果您要签出一个大文件,lfs 检查它是否存在于.git/lfs/objects/{OID-PATH}. 如果不是,它将从服务器下载文件。

所以是的,大型托管文件被所有 repos 中的链接替换(git 关心的问题)。只有当您检查它们时,它们才会被替换。如果.git/lfs/objects/没有得到清理,您的系统上将拥有所有大文件(我不知道 github 客户端是否进行了一些清理)。

于 2016-06-10T12:19:39.777 回答