克隆 git 时 "Filtering content" 是什么意思?

What does "Filtering content" mean when doing a git clone?

我克隆了一个 git 存储库并注意到状态行 Filtering content 非常慢。这通常不会出现。这是什么?

remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 16592 (delta 6), reused 9 (delta 4), pack-reused 16562
Receiving objects: 100% (16592/16592), 14.14 MiB | 1.01 MiB/s, done.
Resolving deltas: 100% (7529/7529), done.
Checking out files: 100% (11475/11475), done.
Filtering content:   6% (115/1729), 390.32 MiB | 1.12 MiB/s

该存储库正在使用 Git LFS,这是一个 git 扩展,用于与 git 存储库一起对大文件进行版本控制。

https://git-lfs.github.com/ https://github.com/git-lfs/git-lfs/

git 中,您可以定义影响将文件从索引移动到工作树("smudge" 过滤器)和从工作树移动到索引( "clean" 个过滤器)。通常,您会找到一个 .git 属性文件,该文件将过滤器与特定路径中的文件相关联。

过去,在 checkoutadd 操作期间,这总是一个文件一个文件地处理。以更批量的方式处理结帐的所有“涂抹”过滤器会更有效,并且 git 最近添加了对此的支持。

(我相信)推动该添加的用例称为 LFS。使用 LFS,大内容存储在辅助存储库中,在核心存储库中用小占位符 ("pointer files") 替换它们。 "smudge" 过滤器下载真实内容并将其放在指针文件的位置。这很可能是您的回购正在做的事情,而且这可能是一个漫长的过程。

不过,一般来说,'filtering' 状态行仅表示一批污迹滤镜正在 运行 检出内容中。