在国内如果不用代理,使用git cloneGithub拉一些大的项目经常失败,git clone是不支持断点续传的,如果要断点续传可以使用以下的方法。

1 Git断点续传项目

假设我们要从GitHub拉取OpenCV:https://github.com/opencv/opencv进行编译,可以按照以下的方法。

  1. 首先新建一个opencv文件夹,然后进入新建的opencv目录,在命令行工具执行git init命令
  2. 再执行git fetch [项目地址]命令,这里以上面的opencv为例,就是git fetch https://github.com/opencv/opencv
  3. 如果第2步中断或者失败,则重复执行第2步,直到完成下载
  4. 下载完成之后,再执行git checkout FETCH_HEAD命令
  5. 再执行git remote add origin [项目地址]命令,以opencv为例,就是git remote add origin https://github.com/opencv/opencv
  6. 再执行git pull origin master命令
  7. 再执行git checkout master命令

在Linux系统下,可以写一个shell脚本,自动循环进行git fetch,比如

#!/bin/bash
set -x

num=1
while [ $num -le 2000 ]; do
   git fetch https://github.com/opencv/opencv
   if [ $? -ne 0 ]; then
       num=$(($num+1))
   else
       break
   fi
done

上面脚本以拉取opencv为例,如果git fetch失败会重复尝试2000次,直到成功拉取。

参考