git加速仓库克隆的方法与浅克隆后如何提交
多线程克隆
git可以开启多线程克隆,对于有多个子仓库的代码克隆,可以添加-j <线程数>
参数加速克隆。如下面的例子,-j后的数字表示指定的线程数量
git clone 仓库地址 -j 3
浅克隆
参数--depth <深度>
。其实就是历史记录被截断为指定提交次数的 ‘浅’ 克隆。示例如下
git clone --depth 1 仓库地址
这里表示只克隆历史记录中近一次的提交。
下面是一些例子。如--depth 1
--depth 2
子模块的浅克隆
加上--shallow-submodules
参数就可以,加上后,如果仓库下有子模块,对于子模块的克隆也会浅克隆(子模块的使用感觉很鸡肋,提交很麻烦)
git clone --depth 1 --shallow-submodules 仓库地址
这几个参数是可以同时使用的,就不写例子了
浅克隆后的带来的无法提交的解决
对于浅克隆后的代码仓,是不能直接提交的,因为git的提交会有安全措施
我最常遇见的代码提交安全措施
1、如果上游分支的名称与本地分支不一致,推送将被中止
2、(没仔细看官方文档中如何描述)自己理解就是会对比本地分支与远程分支的一部分提交记录,如果相差太大,也会中止推送
方案
我这里给出的方案是进入到本地克隆下的仓库后,使用--unshallow
参数,解释如下:
如果源仓库是完整的,将浅层资源库转换为完整的仓库,消除浅层仓库带来的所有限制。
如果源仓库是浅层的,尽可能多的获取,使当前仓库的历史与源仓库相同
git pull --unshallow 仓库地址 分支名
这时就可以提交了。应该还有其他解决方案。