自从 GitHub 对个人提供无限制的私有 repo 之后,作者陆续把之前所有 side project 的 repo 从自建的 Gogs 都迁移到 GitHub 上。日常使用最大的问题就是 clone/push/pull 操作缓慢,我们可以通过设置代理来解决。
Git 支持 ssh,http,https 三种协议,这三种协议设置代理的方式并不一致,同时不同系统环境的配置方式也有区别。
设置 ssh 代理
在 ~/.ssh/config 文件针对 github.com 配置以下代码:
Windows
ProxyCommand connect -S 127.0.0.1:8889 %h %p
命令中的 -S 参数,表示使用 socks5 协议的代理服务器。
例如作者的配置如下:
Host github.com *.github.com
ProxyCommand connect -S 127.0.0.1:8889 %h %p
IdentityFile ~/Dropbox/config-files/identity/id_rsa
Linux/macOS
ProxyCommand nc -v -x 127.0.0.1:8889 %h %p
支持使用 socks5:// 协议的代理服务器。
例如作者的配置如下:
Host github.com *.github.com
ProxyCommand nc -X 5 -x 127.0.0.1:8889 %h %p
IdentityFile ~/Dropbox/config-files/identity/id_rsa
设置 http/https 代理
直接使用以下命令
git config --global http.https://github.com.proxy socks5h://127.0.0.1:8889
可以将上面的命令中的 socks5h:// 改成 socks5://,两者的区别如下:
- socks5h://,会由代理服务器去解析主机域名;
- socks5://,直接由本地发起去解析主机域名;
哪个合适要看代理服务器的情况,举个例子,作者的代理服务器在美国,使用 socks5h:// 由代理服务器解析主机域名明显更快,因为不需要绕道,代理服务器会直接访问 github.com 在美国的 CDN 服务器 IP;假如用 socks5://,会导致本地解析 github.com 获取到 Github 在亚洲的 CDN 服务器 IP,变成本机访问在美国的代理服务器,而代理服务器又要回到亚洲去访问 github.com 的 CDN 服务器。
本文链接:https://blog.wardchan.com/posts/set-proxy-for-git-client.html,参与评论 »
--EOF--
发表于 2020-07-21 08:00:31,并被添加「Git,代理」标签,最后修改于 2020-10-17 10:18:35。查看本文 Markdown 版本 »
Comments