最近用 GitHub 各种问题,把4年前攒的知识重新翻出来,陈年知识又重见天日了。

前言

由于某种原因,某些地区无法正常访问GitHub这个全球最大同性交友社区,造成一批死肥宅无法愉快搞基。
虽然挂代理后网页能开了,但在使用Git工具拉取和推送仓库这种体力活仍然不得行,哪怕是已经在代理客户端上设置了使用全局代理,尤其是使用vmess代理的时候,此时我们可以尝试对Git进行额外代理设置。

设置命令

Git设置或取消代理方式连接网络,只需要执行以下命令:

1
2
3
4
5
6
#设置使用http/https本地代理
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
#取消http/https本地代理
git config --global --unset http.proxy
git config --global --unset https.proxy

以上方式如果还不能解决,可以再次尝试设置sock5代理:

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

如果只针对GitHub设置代理,则用如下命令:

1
2
#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

对于使用 ssh:// 协议的,可以配置socks5代理,在 ~/.ssh/config 文件内容后面添加几行:

1
2
3
Host github.com
User git
ProxyCommand connect -S 127.0.0.1:1080 %h %p

适用场景

  1. hexo等发布到GitHub时失败,错误提示:“xx time out”
  2. 更新GitHub仓库无响应

    $ git push
    ssh: connect to host github.com port 22: Network is unreachable
    fatal: The remote end hung up unexpectedly

  3. 拉取或者提交代码时超时报错

    [info] ssh: connect to host github.com port 22: Connection timed out
    fatal: Could not read from remote repository.

       Please make sure you have the correct access rights
       and the repository exists.
    

参考文档

  1. git 设置和取消代理