【问题标题】:git sparse-checkout ignore specific file typegit sparse-checkout 忽略特定文件类型
【发布时间】:2020-08-20 17:40:32
【问题描述】:

我有一个 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 并添加以下内容(改编自上页中的example):

/*
!**/*.csv

但它似乎无法正常工作。在git pull 克隆了一些文件夹之后,一些没有。我还注意到一个警告,当我执行git sparse-checkout list 时,我得到:

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

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

【问题讨论】:

  • ** 似乎不适合优化的锥形模式布隆过滤器路径过滤的模型。我认为该网页上的示例描述不佳。 (当然,您不必使用锥形模式。)

标签: linux git sparse-checkout git-sparse-checkout


【解决方案1】:

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

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

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

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


OP Frode Akselsen 加上in the comments

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

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

【讨论】:

  • 谢谢,我刚刚意识到我的示例确实有效,未显示的文件夹仅包含 .csv 文件,因此,在应用 .git/info/sparse-checkout 中的规则后,文件夹中没有任何内容不再,因此 git 不显示该文件夹。
  • @FrodeAkselsen 感谢您提供信息丰富的反馈。我已将您的评论包含在答案中以提高知名度。
  • @rkudinov 很遗憾听到这个消息。为了解决您的问题,您的具体情况缺少什么?
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 2020-06-25
  • 2021-12-21
  • 2012-06-28
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多