2022年,继续做开源的朋友-续篇之稀疏检出
source link: https://os.51cto.com/article/706186.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
见社区上有些仓库特别大,下载起来特别花时间。本篇就专门讲述下稀疏检出,如何只检出我们关注的那些文件夹或文件,并整理在《2022年,继续做开源的朋友》系列中。
1、 什么是稀疏检出
如果Git仓库特别大,每次执行Git命令,等待时间会特别长。为解决这些问题,从 1.7.0 开始,Git 引入稀疏检出( sparse checkout)特性,稀疏检出机制允许只检出指定目录或者文件,这在大型 Git 仓库中,将大幅度缩短 Git 执行命令的时间。要想只检出指定的目录或文件,需要在 .git/info/sparse-checkout 文件中指定目录或文件的路径。
下面将以如何快速检出仓库中的https://gitee.com/openharmony/docs部分文件夹为例进行演示。
2、为Git配置稀疏检出
创建一个目录docs,再初始化一个 Git 仓库,以便用稀疏检出的方式检出https://gitee.com/openharmony/docs仓库中的部分文件夹。切换到新创建的目录,然后使用 git config core.sparseCheckout true 命令开启 Git 稀疏检出模式。如下图所示:
mkdir docs
cd docs
git init
git config core.sparseCheckout true
git config --list
然后编辑该仓库目录下的 .git/info/sparse-checkout 文件,指定检出规则。.git/info/sparse-checkout 中使用和 .gitignore 相同的匹配模式,例如 非匹配 !/dir2/* 以及 /*.java 等。这里只检出https://gitee.com/openharmony-sig/online_event仓库中的/zh-cn/device-dev/kernel 文件夹,并把本地仓库和远程仓库关联起来。
echo zh-cn/device-dev/kernel >> .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/docs.git
3、检出代码
继续执行命令检出代码,检出效果如图所示。可以看出实际上,只检出了指定的目录。
git pull origin master
4、关闭稀疏检出
我看看如何检出全部的文件,执行下面的命令,效果如图:
echo "/*" > .git/info/sparse-checkout
git read-tree -mu HEAD
如果需要彻底关闭稀疏检出,配置 Git 的 core.sparseCheckout 为 false 以及移除 .git/info/sparse-checkout 文件即可。
5、git sparse-checkout命令
对于高版本的git,可以直接使用git sparse-checkout来配置稀疏检出。git新版本下载地址为https://git-scm.com/downloads。对git sparse-checkout命令不再一一介绍了,直接体验下即可快速掌握。命令和执行效果图示如下:
mkdir my-docs
cd my-docs/
git init
git sparse-checkout init
git sparse-checkout add /zh-cn/device-dev
git sparse-checkout list
git remote add origin https://gitee.com/openharmony/docs.git
git pull origin master
附录-参考资料:
https://git-scm.com/docs/git-sparse-checkout。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK