版本管理

git sparse checkout (稀疏检出)

2020-11-20  本文已影响0人  yanlong107

前言

开发的mac机器只有256G的硬盘,工程代码仓库 clone 下来后少的10几G,大的有60多G, 所以在日常的使用中,经常会遇到磁盘空间不足的问题,头痛不已。
我们是跨平台开发,git仓库中会保存mac/linux两个平台所需要的所有文件。 其中 *.so 等一些文件在开发mac工程时是不需要的,可以使用sparse checkout功能在同步远程仓库时候,不拉取这些文件,给磁盘留出多一些的可用空间。

本地没有还没有clone仓库

可以执行如下命令,只拉取指定的目录下内容

$ git init <project>
$ cd <project>
$ git remote add origin https://*****.git   //  你的git仓库地址
$ git config core.sparsecheckout true
$ echo "path1/" >> .git/info/sparse-checkout
$ echo "path2/" >> .git/info/sparse-checkout
$ git pull origin [branch]   // 你的分支名称

本地已clone了仓库

$ git config core.sparsecheckout true

.git/config 配置文件中可以看到新增了 sparsecheckout = true 的配置

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
    sparsecheckout = true
/*
!/add_on/native_addon/kylinv4_ft1500a/*
!/add_on/native_addon/neokylin_lib/*
!/add_on/native_addon/ubuntu_lib/*
!/add_on/native_addon/uos_arm_lib/*
!*.so
$ git checkout [branch]   // 你的分支名称

or 

$ git read-tree -mu HEAD

sparse-checkout 文件设置

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

*.so

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

!/docs/

关闭sparsecheckout

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

上一篇 下一篇

猜你喜欢

热点阅读