Z
开发技巧 Beginner

Git 无法连接 GitHub?代理配置完整解决方案

浏览器能访问 GitHub 但 git pull/push 超时?本文详解原因及 Windows/macOS 下 Git 代理配置方法,涵盖 Clash、V2Ray 等常见代理工具。

2026-05-30 ~5 min read #Git #GitHub #代理 #Clash #V2Ray #网络

1. 问题现象

很多开发者遇到过这个奇怪的现象:

  • ✅ 浏览器可以正常打开 github.com
  • ❌ 终端执行 git pullgit pushgit clone 超时报错

报错信息通常是这样的:

fatal: unable to access 'https://github.com/xxx/xxx.git/':
Failed to connect to github.com port 443 after 21046 ms: Timed out

2. 原因分析

核心原因:浏览器和 Git 走的网络通道不一样

程序网络方式说明
浏览器系统代理自动读取系统代理设置(Clash/V2Ray 等)
Git直连默认不走系统代理,直接连接目标服务器

在国内网络环境下,直连 GitHub 经常不稳定或被干扰,导致超时。而浏览器通过代理工具(Clash、V2Ray、Shadowsocks 等)绕过了这个问题。

3. 解决方案:为 Git 配置代理

3.1 确认代理端口

首先找到你代理工具的本地监听端口。常见代理工具的默认端口:

代理工具默认 HTTP 端口默认 SOCKS5 端口
Clash for Windows78907891
Clash Verge78977898
V2RayN1080910808
Shadowsocks10801080

也可以在代理工具的设置界面中查看。

3.2 Windows 设置方法

打开终端(PowerShell 或 Git Bash),执行:

# 设置 HTTP 和 HTTPS 代理(以 Clash 默认端口 7890 为例)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

如果使用 SOCKS5 代理:

git config --global http.proxy socks5://127.0.0.1:7891
git config --global https.proxy socks5://127.0.0.1:7891

3.3 macOS / Linux 设置方法

与 Windows 完全相同,在终端中执行同样的命令即可。

3.4 验证配置

# 查看当前代理配置
git config --global --get http.proxy
git config --global --get https.proxy

# 测试拉取
git pull

如果输出 http://127.0.0.1:7890git pull 正常执行,说明配置成功。

4. 只对 GitHub 走代理

如果你只想让 Git 访问 GitHub 时走代理,其他仓库(如公司内网 GitLab)不走代理,可以这样设置:

# 只对 github.com 走代理
git config --global http.https://github.com.proxy http://127.0.0.1:7890

这样访问非 GitHub 的仓库时,Git 会直连,不受代理影响。

5. 取消代理配置

当你不需要代理时(比如换了网络环境),可以随时取消:

# 取消全局代理
git config --global --unset http.proxy
git config --global --unset https.proxy

# 取消 GitHub 专属代理
git config --global --unset http.https://github.com.proxy

6. 使用 SSH 方式替代 HTTPS

除了配置代理,还可以将远程地址从 HTTPS 切换为 SSH,SSH 方式通常更稳定:

# 查看当前远程地址
git remote -v

# 切换为 SSH 地址
git remote set-url origin git@github.com:用户名/仓库名.git

⚠️ 使用 SSH 方式需要先配置 SSH Key,可参考 GitHub SSH 配置文档

7. 常见问题

Q: 配置代理后仍然超时?

检查代理工具是否正在运行,端口是否正确。可以先用浏览器确认代理工具正常工作。

Q: 代理端口怎么查?

  • Clash for Windows:设置 → Port → 查看 HTTP Port
  • V2RayN:设置 → 参数设置 → 本地监听端口
  • 通用方法:在 PowerShell 中运行以下命令查看系统代理:
[System.Net.WebRequest]::DefaultWebProxy.GetProxy('https://github.com')

输出中的 127.0.0.1:端口号 就是你的代理地址。

Q: 公司内网 GitLab 也受影响?

使用第 4 节的「只对 GitHub 走代理」方案,或使用 SSH 方式访问内网仓库。

8. 总结

方案优点缺点
全局 HTTP 代理简单直接所有 Git 操作都走代理
GitHub 专属代理精准控制只对 GitHub 生效
SSH 方式稳定可靠需要额外配置 SSH Key

推荐组合使用:GitHub 专属代理 + SSH 方式,兼顾便利性和稳定性。

Related Tutorials