报错背景:这个 Git 错误其实之前没怎么遇到过,相信大家在家里或者公司通过科学上网就可以正常提交到 Github;最近出现这个错误我记得自配置 NPM 的 proxy 后才发生。而这个错误出现也不稳定,有时候通过科学上网就可以 git push
成功,有时候即使重启电脑再开启或者关闭科学上网也会出现 443 错误,总之时好时坏。
下图的报错,我当时开启了科学上网:
上图可以看到,fatal: unable to access 'https://github.com/...': Failed to connect to github.com port 443
说明 Git 无法连接到 GitHub 的服务器,常见原因是网络连接问题或防火墙/代理配置。
正常情况下网络连接或防火墙一般不会有问题,那么就剩下 Git 的代理配置了。
-
在命令行检查 Git 的代理配置
如果你已经在 Git 客户端中设置了代理,可以用以下命令查看当前的代理设置:
-
查看某个 Git 仓库代理配置
git config --get http.proxy git config --get https.proxy
-
查看 Git 全局代理配置
git config --global --get http.proxy git config --global --get https.proxy
如果有代理配置,这些命令会返回代理服务器地址。如果没有设置,则什么都不返回
-
-
查看电脑系统的代理设置
不同操作系统有不同的方法查看系统级代理:
- Windows:
- 打开“设置” > “网络和 Internet” > “代理”。
- 在代理设置页面,你可以看到代理服务器地址和端口。
- MacOS:
- 打开“系统偏好设置” > “网络”。
- 选择正在使用的网络连接(如 Wi-Fi 或有线),然后点击“高级”。
- 转到“代理”标签页,你可以看到代理服务器的设置。
- Linux:
- 代理设置通常在网络设置中或通过环境变量(如
http_proxy
和https_proxy
)配置。 - 如果你使用 GNOME 桌面环境,可以在“设置” > “网络” > “网络代理”中查看。
- 代理设置通常在网络设置中或通过环境变量(如
- Windows:
-
下面我以 windows 系统为例,对 NPM 客户端配置代理
当你电脑使用了科学上网,根据上面第 2 步,可以找到我的代理地址、端口
假设代理地址为:
100.0.0.1
,端口为:5000
,我们需要将 Git 的代理配置成和电脑系统一样,可以通过运行以下命令来配置 Git 的代理:-
针对某个 Git 仓库配置代理,需要在这个仓库的根目录下执行
git config http.proxy http://100.0.0.1:5000 git config https.proxy http://100.0.0.1:5000
-
Git 全局代理配置
git config --global http.proxy http://100.0.0.1:5000 git config --global https.proxy http://100.0.0.1:5000
[!NOTE]
-
某个 Git 仓库的代理,如果配置的是 Git 全局代理,则这个配置会在所有仓库中生效。
-
如果同时配置了某个 Git 仓库的代理和 Git 全局代理,Git 会优先使用当前仓库的代理配置。
-
http.proxy
用于通过 HTTP 协议连接的请求,如:http://
开头的远程仓库地址 -
https.proxy
用于通过 HTTPS 协议连接的请求,常用于 GitHub、GitLab 等提供 HTTPS 的托管平台
-
-
如果不需要代理,可以通过以下命令将代理配置取消
-
取消某个 Git 仓库配置代理,需要在这个仓库的根目录下执行
git config --unset http.proxy git config --unset https.proxy
-
取消 Git 全局代理配置
git config --global --unset http.proxy git config --global --unset https.proxy
-