git sparse-checkout ignore specific file type

Fro*_*sen 5 linux git sparse-checkout git-sparse-checkout

I have a git repository with a bunch of large csv in them, which I don't want to clone, so I came across git sparse-checkout and this post: https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/

From this post I took following:

git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone
Run Code Online (Sandbox Code Playgroud)

Then I edit the .git/info/sparse-checkout and add the following (adapted from example in page above):

/*
!**/*.csv
Run Code Online (Sandbox Code Playgroud)

但它似乎不能正常工作。有些文件夹克隆后git pull,有些则没有。我还注意到一个警告,当我这样做时,git sparse-checkout list我得到:

warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/*
!**/*.csv
Run Code Online (Sandbox Code Playgroud)

仅忽略某种文件类型的正确方法是什么?

Von*_*onC 1

请参阅“带排除的 Git 稀疏结帐”并确保使用 Git 2.26.x,它对该git sparse-checkout命令进行了一些修复。

在圆锥模式下,git稀疏结帐设置子命令采用目录列表而不是稀疏结帐模式列表

如果core.sparseCheckoutCone=true,那么 Git 将解析稀疏签出文件,期望这些类型的模式。如果模式不匹配,Git 会发出警告。

您只需使用基于文件夹前缀匹配的限制模式。


OP Frode Akselsen在评论中补充道:

我的示例实际上正在运行:未显示的文件夹仅包含文件 .csv,因此,在应用 中的规则后.git/info/sparse-checkout,该文件夹中不再有任何内容,因此 Git 不会显示该文件夹。

我确认 Git 只会显示内容:如果文件夹没有文件(没有“内容”),则表示文件夹不可见。

  • @FrodeAkselsen 感谢您提供的信息丰富的反馈。我已将您的评论包含在答案中以获得更多可见性。 (2认同)