一、问题背景

在 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 上传失败排查流程

  1. 确认当前目录是不是 Git 仓库,避免在外层文件夹执行命令。
  2. 确认本地是否已经 commit,区分“没提交”和“没推送”。
  3. 确认远程仓库地址是否正确,查看 origin 指向哪个 GitHub 仓库。
  4. 检查 Git 是否配置代理,特别是在国内网络环境下。
  5. 配置全局代理后重新 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。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐