Git常用命令整理七(稀疏检出)

拿到了一个新项目的源码,发现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版本问题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注