版权声明:无私奉献,希望大家转载注明出处,谢谢! https://blog.csdn.net/littlebrain4solving/article/details/77862624
说明
由于有些仓库的规划与年代都比较久远,在历史的提交中可能存在很多咱们目前不关心与一些不再需要的依赖包,但是我们只想获取其中的某个目录或最近提交的历史即可,而不是把整个仓库clone
下来(因为太过于庞大),这个时候需要用到git
的sparse checkout
与shallow
进行处理;我这里的例子用的是selenium的仓库,在此仓库中,我们只需要获取java
目录下的内容,其它各种文件并不关心;通过此篇文档就能明白如何让我们能够更快下载仓库与过滤指定的内容从而提高工作效率。
搭配方式
在实践过程中,我们可以使用多种搭配的方式按需对仓库进行处理,当然你也可以选择任意某一个进行处理即可,有以下两种方式参考如下:
sparse checkout
- 此功能主要用来过滤远程仓库不需要的目录,因为可能我们只关心某个目录下的东西,设置参考如下 (使用与设置sparse checkout
)shallow
- 此功能主要的目的就是在获取远程代码的时候控制历史提交的深度,我们可以指定深度相关的参数只需要获取最新提交历史就能减少网络开销了,更多参考点击:Git Clone文档中的Depth选项
注意: 采用
sparse checkout
的话就不能使用git clone
命令进行来控制了,需要手动创建目录并通过git
初始化进行处理。
使用与设置sparse checkout
新建目录
mkdir selenium && cd selenium
配置开关与查看
git config core.sparsecheckout true
git config --list
手动对目录进行git init
与git remote
git init
git remote add origin https://github.com/SeleniumHQ/selenium
利用vi
新建文件
vi .git/info/sparse-checkout
过滤目录表达式
这里的表达式其实和.gitignore
的类似,我这里只关注java目录,所以我的表达式是以下这样写的。
!*
java/server/**
使用shallow
shallow 与 git pull
git pull --depth 1 origin master
shallow 与 git clone
git clone --depth 1 https://github.com/SeleniumHQ/selenium
参考资料
https://www.atlassian.com/blog/git/handle-big-repositories-git