2

我有一个 git 存储库,里面有一堆大的 csv,我不想克隆,所以我遇到了 git sparse-checkout 和这篇文章:https ://github.blog/2020-01-17-bring -your-monorepo-down-to-size-with-sparse-checkout/

从这篇文章中,我采取了以下措施:

git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone

然后我编辑.git/info/sparse-checkout并添加以下内容(改编自上面页面中的示例):

/*
!**/*.csv

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

warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/*
!**/*.csv

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

4

1 回答 1

0

请参阅“ Git sparse checkout with exclude”并确保使用 Git 2.26.x,它对git sparse-checkout命令进行了一些修复。

在锥形模式下, git sparse-checkout set 子命令采用目录列表而不是稀疏检查模式列表

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

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


OP Frode Akselsen在评论中补充道:

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

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

于 2020-05-06T05:52:45.627 回答