拿到了一个新项目的源码,发现base超级大(比如接近1G), 其中包含了各种模块及资源,全部checkout下来需要话费很多时间,此外会占用大量磁盘空间。这个时候我们可能希望不检出一些代码,那么就可以用到Git稀疏检出(sparse checkout)功能了。
Git系列的目录如下:
Git常用命令整理一(Git stash)
Git常用命令整理二(Git托管项目)
Git常用命令整理三(Git配置)
Git常用命令整理四(Git删除文件)
Git常用命令整理五(Git疑难杂症)
Git常用命令整理六(创建分支的子分支)
Git常用命令整理七(稀疏检出)
Git常用命令整理八(忽略文件)
Git常用命令整理九(忽略跟踪)
Git常用命令整理十(优雅用法)
Git常用命令整理十一(各种撤回)
一、稀疏检出设置
0、进入代码仓库,开启sparse checkout功能
git config --global core.sparsecheckout true
1、设置检出的配置文件
配置文件目录
.git/info/sparse-checkout
2、配置文件设置说明
每行一个规则,*表示通配符,!表示反选
3、设置检出文件
/webapp/
4、设置不检出文件
/* !/application/ !/webapp/ /webapp/project/
注:使用了!不检出,需要在第一行设置/*
二、稀疏检出实现原理
参考:稀疏检出和浅克隆
三、常见错误
0、git操作的时候提示error: Sparse checkout leaves no entry on working directory
可能原因是修改了sparse checkout配置,规则不对,比如写成了{!/application/, !/webapp}
1、检出的文件不符合预期
设置了sparse checkout,但是检出的文件跟设置不一致,比如期望的文件没检出,可能跟git版本有关。
遇到了一次,该检出的文件没有检出,git版本是1.7升级后就可以。
git --version git version 2.17.1
注:如果遇到检出文件丢失的情况,首先排查稀疏检出规则,然后考虑git版本问题。