GitHub 上传失败:Failed to connect to github.com port 443 的完整排查与解决Windows + VS Code + Git
一、问题背景
在 VS Code 中点击 Publish Branch,或者在 PowerShell 中执行 git push 时,Git 无法把本地提交上传到 GitHub。本地 commit 已经存在,问题并不是“没有提交”,而是提交无法通过 HTTPS 连接推送到远端仓库。

图 1 错误现象示意图
二、典型报错
|
fatal: unable to access 'https://github.com/<user>/<repo>.git/': Failed to connect to github.com port 443 after 2056 ms: Could not connect to server |
这条报错最重要的信息是 port 443 连接失败。443 是 HTTPS 默认端口,说明 Git 访问 GitHub 的网络链路没有打通。
三、排查思路
图 2 GitHub 上传失败排查流程
- 确认当前目录是不是 Git 仓库,避免在外层文件夹执行命令。
- 确认本地是否已经 commit,区分“没提交”和“没推送”。
- 确认远程仓库地址是否正确,查看 origin 指向哪个 GitHub 仓库。
- 检查 Git 是否配置代理,特别是在国内网络环境下。
- 配置全局代理后重新 push,并建立本地分支与远端分支的跟踪关系。
四、关键命令
|
检查项 |
命令 |
判断方式 |
|
当前是否是仓库 |
git status |
如果提示 not a git repository,说明目录不对 |
|
远端地址是否正确 |
git remote -v |
确认 origin 指向自己的 GitHub 仓库 |
|
本地是否已提交 |
git log --oneline -5 |
能看到最新 commit,说明本地提交存在 |
|
Git 是否配置代理 |
git config --global --get http.proxy |
无输出表示 Git 没有全局代理 |
|
第一次推送分支 |
git push -u origin main |
成功后 main 会跟踪 origin/main |
五、根因分析
最终定位到的核心原因是:本机虽然运行了代理工具,但 Git 没有自动走代理。浏览器能打开 GitHub,不代表命令行 Git 一定能连接 GitHub。
|
一句话结论 GitHub 上传失败的根因不是仓库坏了,而是 Git 命令没有使用本机代理,导致直连 github.com:443 失败。 |
六、最终解决方案
将本机代理配置为 Git 全局代理。端口 <PORT>请对应你自己的真实端口。
|
git config --global http.proxy http://127.0.0.1:<PORT> git config --global https.proxy http://127.0.0.1:<PORT> |
然后进入自己的仓库目录,第一次推送 main 分支:
|
cd D:\Code\your-project git push -u origin main |

图 3 推送成功时的关键输出
七、为什么换文件夹又上传不了?
因为每一个 Git 仓库都有自己的本地配置、远程地址和分支跟踪关系。如果只给某一个仓库配置 local 代理,换到另一个仓库后配置不会自动继承。
图 4 不同文件夹可能对应不同 Git 仓库
图 5 local 配置与 global 配置的区别
八、常用命令
|
git status git remote -v git log --oneline --decorate -5 git config --global --get http.proxy git config --global --get https.proxy |
如果以后不想让 Git 走代理,可以取消全局配置:
|
git config --global --unset http.proxy git config --global --unset https.proxy |
九、替换说明
- 作者 GitHub 用户名和私有仓库名,统一替换为 <user>/<repo>。
- 代理端口,写成 127.0.0.1:<PORT> 。
十、总结
这次排查的关键是先分清三个概念:commit 是本地提交,push 才是上传 GitHub;local 配置只影响当前仓库,global 配置影响所有仓库;浏览器能访问 GitHub,不代表 Git 命令也已经走代理。
|
最终命令模板 git config --global http.proxy http://127.0.0.1:<PORT>;git config --global https.proxy http://127.0.0.1:<PORT>;git push -u origin main。 |
更多推荐




所有评论(0)