Git只获取部分目录的内容(稀疏检出)

公司的开发从SVN切换到Git,在SVN下,可以很方便的只获取版本库中一个或多个目录的内容,但是Git的克隆,默认是直接拉取整个远程仓库,如果项目比较大,大量和自己无关的内容也会拉到本地,占用很多硬盘空间。
在网上搜了一下,Git在1.7版本后,已经支持只Checkout部分内容,这个功能叫做 sparse checkout(稀疏检出)。

开启

git config core.sparsecheckout true

Paste_Image.png

写入要获取的文件

echo "BATInterview" >> .git/info/sparse-checkout
只拉取BATInterview文件夹

此时会在sparse-checkout文件中追加


Paste_Image.png

如果以后修改了 .git/info/sparse-checkout,增加或删除部分目录,可以执行如下命令重新Checkout
$ git checkout master

或执行以下命令:
$ git read-tree -mu HEAD

要关闭 sparse checkout功 能,

仅仅修改设置,将core.sparsecheckout设为false是不生效的,需要修改 .git/info/sparse-checkout 文件,用一个”*“号替代其中的内容,然后执行 checkout 或 read-tree 命令。

(浅克隆)

如果只拉取最近一次的变更,忽略以前的变更记录,在拉取时可以加参数depth,如git pull --depth=1 origin master

已经建了版本库

如果本地已经建了版本库,要使用这个功能,可以进入版本库的目录,执行以下命令


$ git config core.sparsecheckout true
$ echo "path1/" >> .git/info/sparse-checkout
$ echo "path2/" >> .git/info/sparse-checkout
$ git checkout master

sparse-checkout 文件设置

子目录的匹配在 sparse-checkout 文件中,如果目录名称前带斜杠,如/docs/
,将只匹配项目根目录下的docs目录,如果目录名称前不带斜杠,如docs/
,其他目录下如果也有这个名称的目录,如test/docs/
也能被匹配。而如果写了多级目录,如docs/05/
,则不管前面是否带有斜杠,都只匹配项目根目录下的目录,如test/docs/05/
不能被匹配。
通配符 ““ (星号)在 sparse-checkout 文件中,支持通配符 ““,如可以写成以下格式:

*docs
/index.*
*.gif

排除项

“!” (感叹号)在 sparse-checkout 文件中,也支持排除项 “!”,如只想排除排除项目下的 “docs” 目录,可以按如下格式写:

/*
!/docs/

很像 .gitignore的写法

要注意一点:如果要关闭sparsecheckout功能,全取整个项目库,可以写一个”“号,但如果有排除项,必须写”/“,同时排除项要写在通配符后面。

参考:https://zhgcao.github.io/2016/05/11/git-sparse-checkout/

实测时发现,不在sparse-checkout的文件,pull 是不会拉取了,但是添加还是会默认添加的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,646评论 9 163
  • 在移动互联网的终端时代下新出的商业管理模式~把团购和折让固化下来,按月订购,循环订购,通过每月固定从自己绑定好的银...
    煜平垚阅读 4,170评论 0 0
  • 目录 上一章 下一章 我们曾如此期待长大,期待独自面对人生。成年后却开始质疑成长的本质,质疑它究竟是要给予我们什...
    洛洛莉ya阅读 6,256评论 6 17
  • 好久没有写简书了。 换季了比较忙,但更多的还是拖延症发作。 也有对自己没什么大的进步的羞愧之心。 上周五晚上因为不...
    叛逆的榴莲阅读 1,443评论 2 2