有没有办法让git lfs不下载非repo文件的对象?

有没有办法让git lfs不下载非repo文件的对象?,git,git-lfs,Git,Git Lfs,我有一个git lfs对象,它是一年前从我们的git回购中删除的。当我们克隆时,它仍然下载LFS对象,以防有人需要回到历史上的那个版本。问题是:该文件是一个可执行文件,正在克隆操作时触发Windows defender。如果我们将环境设置为跳过smudge,然后执行git-lfs拉取,那么问题就会消失,但是下载不太可能需要的lfs对象似乎是浪费 有没有办法: a) 从LFS服务器中删除对象,并使git克隆仍然成功,但忽略该文件 b) 告诉git不要为特定的提交哈希、对象、日期、文件名或排除某些对

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

有没有办法:

a) 从LFS服务器中删除对象,并使git克隆仍然成功,但忽略该文件


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

默认情况下,git lfs只下载签出存储库所需的文件。这种情况是因为Git将指针文件传递给Git LFS,然后Git LFS生成一个要下载的对象列表并将其下载。Git LFS通常不会为其他版本预取文件,除非您要求它这样做

如果Git LFS正在下载此对象,而您没有明确要求它使用
Git LFS fetch
Git LFS pull
,那么它可能仍然在工作树中的某个位置被引用


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

感谢您的回复。这是否意味着在某些情况下,您克隆了一个回购,然后在脱机状态下执行
git checkout
,并且LFS对象在本地不可用,因为它们不是预取的,所以您必须连接到internet并在构建工作之前执行
git LFS pull
?我的印象是,它在本地下载了所有历史记录,这样你就可以在脱机状态下任意修改。是的,没错。与Git不同,Git LFS默认情况下不会下载签出当前版本时不需要的对象。这是因为目标的一部分是提高磁盘使用率,而从整个历史记录中下载所有对象并不能真正改善仅将这些对象存储在Git中的情况。