美文网首页版本管理
git sparse checkout (稀疏检出)

git sparse checkout (稀疏检出)

作者: yanlong107 | 来源:发表于2020-11-20 15:51 被阅读0次

前言

开发的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]   // 你的分支名称
  • git init <project> : 建立一个空的版本库
  • git remote add origin https://*****.git : 添加远程库的地址
  • git config core.sparsecheckout true : 打开sparse checkout功能
  • echo "path1/" >> .git/info/sparse-checkout : 添加目录到checkout的列表 ,也可以使用文本编辑
  • git pull origin [branch] : 拉取远程的分支

本地已clone了仓库

  • 1、打开 sparse checkout 功能
    进入版本库的目录,执行以下命令
$ git config core.sparsecheckout true

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

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
    sparsecheckout = true
  • 2、 添加 checkout 列表
    使用文本编辑打开 .git/info/sparse-checkout 文件 (没有这个文件可以手动创建一个)
    添加如下列表。
/*
!/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
  • 3、 重新checkout
$ 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功能,全取整个项目库,可以写一个”“号,但如果有排除项,必须写”/“,同时排除项要写在通配符后面。

相关文章

网友评论

    本文标题:git sparse checkout (稀疏检出)

    本文链接:https://www.haomeiwen.com/subject/rxidiktx.html