解决 GitHub 仓库 clone 缓慢或断连的问题

方法 1 设置代理

这种方法很简单粗暴,你需要拥有一个代理,协议可以是 socks5 或者 http 代理。但在某些网络环境下,经过尝试,速度基本上没有提升。

1
2
git config --global http.proxy 'socks5://127.0.0.1:1081'
git config --global https.proxy 'socks5://127.0.0.1:1081'

方法 2 远程克隆

这是我自创的一个办法:既然本地网络环境连接 GitHub 很慢,那么可以借助一台服务器进行 clone(一般服务器上都比较快的哦),然后再下载到本地。思路是很简单,接下来就是 bash 脚本大显身手的时候了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

git_url=$1
dir=$2

remote_clone() {
echo "git clone $1 $2 on remote"
ssh -t root@1.2.3.4 "git clone $1 $2"
}

download() {
echo "Downloading $dir to local..."
scp -q -r root@1.2.3.4:/root/$dir/ $dir
}

rm_clone() {
echo "Remove $dir on remote machine..."
ssh -q -t root@1.2.3.4 "rm -rf $dir"
}


remote_clone $git_url $dir
download
rm_clone
echo "Finish!!!"

ssh 加上 -t flag 将登录并运行指定的命令,然后退出,它不会与远程服务器保持连接。比如 ssh -t root@1.2.3.4 "ls" 就会在远程执行 ls 命令,并将结果打印在本地终端上,这也符合我们的预期。

我们使用 root 用户登录服务器,也可以使用拥有rm命令权限的用户登录。脚本会在下载完成后,使用rm命令删除服务器上的文件。

使用时只需将脚本中的 IP 1.2.3.4改为你的服务器 IP 即可。下图是使用截图🎉 🎉 🎉

reclone test