总结:
git fetch下载的repo要比git clone下载的repo大许多。
给定一个tag标签,git clone明确了一个库的tag标签在默认分支上,而git fetch则不能。
git fetch为了确定库的标签在哪个分支上需要做大量的计算,而git clone则不需要。
我们可以看出git clone要比git fetch快许多,所以要在使用cocoapods时要尽量避免执行git fetch,看下下面几种解决方案:
方案一: 使用下面两个命令行
pod installl --no-repo-update --verbose
pod update --no-repo-update --verbose
其中--verbose的作用就是打印出执行过程中详细的信息,--no-repo-update的作用就是禁止更新repo,这样就避免执行了git fetch,从而加快速度。但是如果repo本身就很老(第三方库版本比较低)的时候,仍然是需要更新repo的,这种情况下如何处理呢?请看方案二和方案三。
方案二: 进入到repos目录下,通过git clone直接添加master库,命令行如下:
1
2
3$ cd ~/.cocoapods/repos
$ pod repo remove master
$ git clone https://github.com/CocoaPods/Specs.git master
首先要把本地老的master分支给移除掉,然后使用git clone从github镜像源上clone一份且设置本地master库。这样本地的repo就是最新的了,此时在进入到当前工程目录下,执行方案一提供的命令行。这样就解决了工程依赖的第三方库版本过低需要更新的问题。但是我们在clone github镜像源的时候,发现速度还是比较慢的,这是因为国内访问github的速度不给力,没办法的事情,这个时候可以考虑挂一个VPN或者使用国内一些网站提供的镜像源。
注意点:
master repo里面存放的是所有第三方库的地址列表,下载第三方库对应的源码还是要到指定的源码存放地址(podspecs中有指定)去下载。更换repo源只是加快了repo的下载速度,并不会加快第三方库源码的下载速度,两者是没有任何关系的。
在工程中尽量避免直接使用pod update、pod install,在后面添加--no-repo-update后使用。
工程中依赖第三方库版本过低,可以先到repos目录下,使用git clone更新master repo,然后在工程中使用pod update --no-repo-update命令。