git加速和只下载部分目录

时间:2024-08-04 17:03:02

浅复制

工作要用到的.git有1.8G太大了。下载过程要好几个小时,太慢了。可以这样操作

git clone 默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能:

$ git clone --depth=1 https://github.com/bcit-ci/CodeIgniter.git
--depth=1 表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,例如,CodeIgniter 项目完整下载有近 100MiB ,而使用浅复制只有 5MiB 多,这样即使在恶劣的网络环境下,也可以快速的获得代码。如果之后又想获取完整历史信息,可以使用下面的命令:

$ git fetch --unshallow

对zadas我实际用的命令是:git clone --depth=1 http://shagit01.cn.zmt.local/ST/zadas.git

用该命令还是没法得到分支 fusion_dev下的代码。

断点续传的方法

mkdir zadas

cd zadas

git fetch http://shagit01.cn.zmt.local/ST/zadas

中间如果断了,就再执行一下 git clone ...

直到fetch完毕后,出现以下字样

From  http://shagit01.cn.zmt.local/ST/zadas.git

*branch           HEAD                -> FETCH_HEAD

然后用git checkout FETCH_HEAD

或者也等同于git fetch  http://shagit01.cn.zmt.local/ST/zadas.git HEAD

对这个方法需要持谨慎态度,因为我 git branch -r 显示远程分支,结果为空,实际是不对的。

下载个别目录

$ mkdir 文件夹名称

创建一个空的本地仓库
$ git init

连接远程仓库GitHub
$ git remote add -f origin <url>
我的操作:$ git remote add -f origin https://github.com/aliyun/alicloud-android-demo.git
然后控制台会显示一些updating...信息。注意,这里的url必须是.git结尾的。

开启sparse checkout 模式
$ git config core.sparsecheckout true

告诉Git哪些文件或者文件夹是你真正想Check Out的
(你可以将它们作为一个列表保存在 .git/info/sparse-checkout 文件中。)

例如:
$ echo libs >> .git/info/sparse-checkout

最后一步,拉取想要的分支

$ git pull origin master