# git sparse checkout (稀疏检出)
有时候我们只想拉取某个仓库的部分代码,那么我们可以这么做。以https://github.com/antfu/unplugin-vue-components
仓库为例,我们只想拉去examples/vue-cli
目录下的文件,具体步骤如下
mkdir unplugin-vue-cli
cd unplugin-vue-cli
- git init
- git remote add origin https://github.com/antfu/unplugin-vue-components.git
- git config core.sparsecheckout true
- echo "examples/vue-cli/" >> .git/info/sparse-checkout
- git pull origin main
执行以上7个步骤就完成对examples/vue-cli
的克隆
# 排除的例子
我们现在想克隆app下除了CD目录外的其他文件
app
├── components
| ├── A
| | └── Index.vue
| ├── B
| | └── Index.vue
| ├── C
| | └── Index.vue
| ├── D
| | └── Index.vue
├── router
| └── index.js
├── readme.md
├── exposure.js
├── intersection-observer.js
├── wb.js
└── index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 在项目的.git/info目录下建立
sparse-checkout
- 输入
/*
!/components/
/components/A
/components/B
1
2
3
4
2
3
4
- 要保留的写在下面
# sparse-checkout 文件设置
# 子目录的匹配
在 sparse-checkout 文件中,如果目录名称前带斜杠,如/docs/,将只匹配项目根目录下的docs目录,如果目录名称前不带斜杠,如docs/,其他目录下如果也有这个名称的目录,如test/docs/也能被匹配。 而如果写了多级目录,如docs/05/,则不管前面是否带有斜杠,都只匹配项目根目录下的目录,如test/docs/05/不能被匹配fd
# 通配符 ““ (星号)匹配
在 sparse-checkout 文件中,支持通配符 ““,如可以写成以下格式:
- docs/*
- index.*
# 排除项 “!” (感叹号)匹配
在 sparse-checkout 文件中,也支持排除项 “!”,如只想排除排除项目下的 “docs” 目录,可以按如下格式写:!/docs/