git push 在全局代理下有时失效的原因

报错

1
fatal: unable to access 'https://github.com/...': Recv failure: Connection was reset

方案

假设代理监听在127.0.0.1:7897 ,在终端直接运行

1
2
3
git config --global http.proxy  http://127.0.0.1:7897
git config --global https.proxy http://127.0.0.1:7897

即可解决。


原因

  • 原来的情况: 浏览器什么的走的是系统代理,也是就是clah开的全局代理,但是git没走代理,直接裸连的github,被国内网络 reset
  • 现在的情况: 更改了全局git配置文件,所有仓库都统一用这个代理。
    • 数据流变成:
      git -> 本地代理端口 —> clash接管请求,转发到github -> 返回的结果再原路返回到git