git-lfs 网站上的功能概述说
Git 大文件存储 (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件,同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。
但这句话让我感到困惑,似乎与模棱两可的附图格格不入。
大型(托管)文件是否替换为本地和远程存储库上的链接,还是仅在远程存储库上?当有人使用 git-lfs 托管文件克隆远程仓库时会发生什么?
git-lfs 网站上的功能概述说
Git 大文件存储 (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件,同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。
但这句话让我感到困惑,似乎与模棱两可的附图格格不入。
大型(托管)文件是否替换为本地和远程存储库上的链接,还是仅在远程存储库上?当有人使用 git-lfs 托管文件克隆远程仓库时会发生什么?
您可以阅读规范中的详细信息。它的工作原理如下:
大文件(通过 lfs 跟踪的文件)绝不是存储库的一部分。相反,只有小指针文件被写入其中。
如果你提交一个大文件,lfs 将拦截并用指针替换文件。文件本身保存到.git/lfs/objects/{OID-PATH}
.
如果你推送一个大文件.git/lfs/objects/{OID-PATH}
,将会同步到存储这些大文件的存储。
如果您要签出一个大文件,lfs 检查它是否存在于.git/lfs/objects/{OID-PATH}
. 如果不是,它将从服务器下载文件。
所以是的,大型托管文件被所有 repos 中的链接替换(git 关心的问题)。只有当您检查它们时,它们才会被替换。如果.git/lfs/objects/
没有得到清理,您的系统上将拥有所有大文件(我不知道 github 客户端是否进行了一些清理)。