有什么方法可以让 git-lfs 不为不在 repo 中的文件下载对象?

Any way to make git-lfs not download objects for files not in repo?

我有一个 git-lfs 对象,一年前从我们的 git 存储库中删除了。当我们克隆时,它仍然会下载 LFS 对象,以防有人需要回到历史上的那个版本。问题是:该文件是一个可执行文件,并且正在触发 Windows defender 进行克隆操作。如果我们将环境设置为跳过 smudge 然后执行 git lfs pull 那么问题就会消失,但是下载不太可能需要的 LFS 对象似乎很浪费。

有没有办法:

a) 从 LFS 服务器删除对象并 git 克隆仍然成功但只是忽略文件?

b) 告诉 git 不要为特定的提交哈希、对象、日期、文件名或其他排除某些对象的方式下载 lfs 对象?

默认情况下,Git LFS 仅下载检出存储库所需的文件。之所以如此,是因为 Git 将指针文件传递给 Git LFS,然后 LFS 生成要下载的对象列表并下载它们。 Git 除非您要求,否则 LFS 通常不会为其他修订预取文件。

如果 Git LFS 正在下载这个对象,而你没有用 git lfs fetchgit lfs pull 明确要求它,那么它可能仍在你的工作树中的某处被引用。

请注意,如果您删除该文件,将在签出该修订版时导致错误,因此您不希望这样做。您可以使用文档中提到的 lfs.fetchexclude 配置选项来排除某些文件,但是找到引用文件的位置并确保它已经消失可能会更容易。