git clone linux库踩过的坑及解决方法

1.前言

我在git clone linux开源仓库中遇到了很多的麻烦,解决这些麻烦也花费了我大量的时间,于是打算记录我解决这个问题的过程。

2.过程

最开始的时候我是直接在git bash中使用:git clone git@github.com:torvalds/linux.git命令来直接clone linux的源代码库,但是一开始的下载速度非常慢,等了很久,在波动的网速下总算将所有的object下载下来了(一看发现有3GB多),但后面就遇到了困扰我最久的一个问题:

这个closed by remote host的问题经我百度之后发现一般都是在ssh链接上发生的,没有适用我这个情况的帖子。所以我只能盲人摸象。

一开始我认为是网速的问题,然后挂了VPN进行下载,在平均2-3MB/s的网速下仍有这个问题,认为并不是网速的缘故。后面我发现最花费时间的是resolving deltas这个步骤,而且这个connect closed的跳出时间在resolving之前,而且百度方面也没有相似的问题,这一阶段我已经卡了很久了。

我git clone了好几次,也尝试过失败后直接进行git pull,但仍然是一样的问题。为了提高网速我甚至采用先把代码库clone到国内的gitee网站上再clone的方法,但是gitee对于1GB以上的仓库需要收费,不了了之。

然后我开始认为是linux库过大的原因,于是打算提高buffer的容量,但仍然没有解决。

后面又打算延长ssh的链接时间,但是并没有找到正确的命令,无法延长。

之后我总算找到了正确的解决方法。

3.解决方法

主要参考网址:https://blog.csdn.net/SmallSource/article/details/90691700

我采用的方法是浅层clone,命令是git clone --depth=1 git@github.com:Sklud1456/linux.git(由于之前fork过,所以就一直使用自己的仓库了)

这一次的objects数量很少:原本有8562013个,现在仅有79571个

上图是我自己中断了,但后面第二次clone的时候出现了新的问题。缺失了路径,百度得知是由于linux和Windows不兼容的问题,但通过:

git config core.protectNTFS false(在执行该命令时要查看仓库是否为linux仓库,因为git clone linux会在根目录下新建一个linux文件夹,在这个文件夹里面才是仓库,这一点在我clone其他仓库是没有遇见)

git checkout -f HEAD

之后可以正常下载,原因在这一个网站有解释:http://t.zoukankan.com/GyForever1004-p-13702643.html

这时候的linux仓库仅有最新的一个commit。

之后再执行一次:git pull --unshallow即可

运行结束后其中的commit数量变成了全部的commit数量。

4.总结

对于git clone我还是第一次踩这么多的坑,而且网上没有对于这种情况的完整解释,且该方法可能对其他一些commit数量多、总量大的仓库也有借鉴作用,所以进行了记录,希望可以帮到其他人。

我现在觉得一开始直接git clone报connect closed的问题也有可能是没有关闭文件保护的原因,但是我并没有进行验证。已经有了一个解决方法,够用就行。

 

posted @ 2022-02-13 15:31  Skuld1456  阅读(1995)  评论(0编辑  收藏  举报