Posts 如何使用git按需快速clone仓库减少网络开销
Post
Cancel

如何使用git按需快速clone仓库减少网络开销

说明

由于有些仓库的规划与年代都比较久远,在历史的提交中可能存在很多咱们目前不关心与一些不再需要的依赖包,但是我们只想获取其中的某个目录或最近提交的历史即可,而不是把整个仓库clone下来(因为太过于庞大),这个时候需要用到gitsparse checkoutshallow进行处理;我这里的例子用的是selenium的仓库,在此仓库中,我们只需要获取java目录下的内容,其它各种文件并不关心;通过此篇文档就能明白如何让我们能够更快下载仓库与过滤指定的内容从而提高工作效率。

搭配方式

在实践过程中,我们可以使用多种搭配的方式按需对仓库进行处理,当然你也可以选择任意某一个进行处理即可,有以下两种方式参考如下:

  • sparse checkout - 此功能主要用来过滤远程仓库不需要的目录,因为可能我们只关心某个目录下的东西,设置参考如下 (使用与设置sparse checkout)
  • shallow - 此功能主要的目的就是在获取远程代码的时候控制历史提交的深度,我们可以指定深度相关的参数只需要获取最新提交历史就能减少网络开销了,更多参考点击:Git Clone文档中的Depth选项

注意: 采用sparse checkout的话就不能使用git clone命令进行来控制了,需要手动创建目录并通过git初始化进行处理。

使用与设置sparse checkout

新建目录

1
mkdir selenium && cd selenium

配置开关与查看

1
2
git config core.sparsecheckout true
git config --list

手动对目录进行git initgit remote

1
2
git init 
git remote add origin https://github.com/SeleniumHQ/selenium

利用vi新建文件

1
vi .git/info/sparse-checkout

过滤目录表达式

这里的表达式其实和.gitignore的类似,我这里只关注java目录,所以我的表达式是以下这样写的。

1
2
!*
java/server/**

使用shallow

shallow 与 git pull

1
git pull --depth 1 origin master

shallow 与 git clone

1
git clone --depth 1 https://github.com/SeleniumHQ/selenium

参考资料

https://www.atlassian.com/blog/git/handle-big-repositories-git

This post is licensed under CC BY 4.0

软考笔记

自动化测试入门教程(Maven + TestNG + Selenium)

Comments powered by Disqus.