如何使用 Git 只克隆部分文件

背景

对于使用大仓模式开发的团队,项目代码按目录存放在同一个仓库下,代码和历史提交日积月累,每次跑流水线时如果克隆全量代码,效率非常低。

所以需要一个机制,可以只克隆部分我们关心的文件,本文主要记录之前研究和尝试的结果。

怎么做

第一步、初始化

1
git clone --depth 1 --filter=blob:none --sparse https://github.com/HunterXuan/wx-tfjs-demo.git
  • --depth 用于控制克隆的历史版本次数,对于 CICD 的场景,一般只关心最新版本,所以这里指明克隆深度为 1 即可
  • --filter 在部分克隆的模式下,用于指明要克隆的文件,这里排除了所有的二进制文件
  • --sparse 指定使用 sparse-checkout 模式,该模式下仅克隆根目录下的文件,后续可使用 git-sparse-checkout 命令新克隆文件

第二步、检出需要的文件

1
git sparse-checkout set file1 dir1

使用上述命令可检出关心的文件和目录,多个文件/目录用空格隔开即可。