系统版本:Window 10,Git 版本:2.7.1java
对于大型 Git 仓库,每次执行 Git 命令,都须要通过漫长的等待,特别是要常常执行的 git status
命令。下面是一个例子...git
从 1.7.0 开始,Git 引入 sparse checkout(稀疏检出)
机制,稀疏检出机制容许只检出指定目录或者文件,这在大型 Git 仓库中,将大幅度缩短 Git 执行命令的时间。github
要想只检出指定的目录或文件,须要在 .git/info/sparse-checkout
文件中指定出目录或文件的路径,下面将以一个具体例子介绍 如何使用 Git 的 sparse checkout
。spa
初始化一个仓库,目录结构以下图所示:code
根目录下有 2 个子目录,以及一个 LICENSE
文件和 README.md
文件,每一个子目录中各有 3 个。
将其推送到Github上新建的一个仓库,地址是 git@github.com:liangzai-cool/git-sparse-checkout-study.git
。图片
换一个目录,再初始化一个 Git 仓库,以便用稀疏检出的方式,检出刚才在 Github 上新建的 git-sparse-checkout-study
仓库:get
使用 git config core.sparseCheckout true
命令开启 Git 稀疏检出模式。而后编辑该仓库目录下的 .git/info/sparse-checkout
文件,指定检出规则。这里只检出 git-sparse-checkout-study
仓库中的 dir1
目录下的全部文件和 根目录下的 README.md
文件:it
添加远程仓库地址,并检出:class
能够看到,Git 只检出了根目录下的 README.md
文件和 dir1
目录。配置
若是此时须要再检出,根目录下的 dir2
目录,则须要将其加入到 .git/info/sparse-checkout
文件中。参照下图中的方案:
和上面检出 dir2
时相似:
能够看到全部文件都已显示出来了。
注意这里的 echo
命令:
echo "/*" > .git/info/sparse-checkout
最后不要忘了配置 Git 的 core.sparseCheckout
为 false
以及移除 .git/info/sparse-checkout
文件。
.git/info/sparse-checkout
中使用和 .gitignore
相同的匹配模式,例如 非匹配 !/dir2/*
以及 /*.java
等。