记录时间:2026-04-28 20:17:26 适用场景:在大陆等网络受限环境下,让 Git、GitHub CLI、npm、pip、curl 等终端工具稳定访问海外资源。

核心理念

过去常见的做法是为每个工具分别配置代理,例如:

  • git config --global http.proxy

  • npm config set proxy

  • pip --proxy ...

这种方式的问题是维护成本高。一旦代理软件或端口发生变化,很容易遗漏某个工具的专属配置,最终出现网络超时、连接失败、认证异常等不易排查的问题。

更推荐的做法是:清理各工具的专属代理配置,统一使用 Windows 用户级环境变量 HTTP_PROXYHTTPS_PROXY

这样做的好处是:

  • 一处修改,全局生效:多数现代命令行工具都会自动读取这两个标准环境变量。

  • 配置更干净:减少 Git、npm、pip 等工具之间互相冲突的代理设置。

  • 维护成本更低:如果代理端口从 7890 变为 10808,只需要修改一次环境变量。


配置方法

下面假设本地代理软件(如 Clash、V2Ray、sing-box 等)提供的 HTTP 代理端口为 7890

如果你的代理端口不是 7890,请把命令中的 7890 替换为实际端口。

推荐方法:PowerShell 一键永久配置

打开 PowerShell,执行以下命令,将代理永久写入当前 Windows 用户的环境变量:

 # 永久设置用户级环境变量
 [Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:7890", "User")
 [Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:7890", "User")
 ​
 # 让当前已打开的 PowerShell 窗口立即生效
 $env:HTTP_PROXY = "http://127.0.0.1:7890"
 $env:HTTPS_PROXY = "http://127.0.0.1:7890"

说明:永久环境变量会在新打开的终端、IDE 或编辑器中自动生效;已经打开的窗口通常需要重启,除非像上面一样手动设置当前会话变量。

备用方法:Windows 图形界面配置

  1. Win + R,输入 sysdm.cpl,然后回车。

  2. 切换到 高级 选项卡,点击 环境变量

  3. 在上半部分的 用户变量 区域点击 新建,依次添加:

    • 变量名:HTTP_PROXY,变量值:http://127.0.0.1:7890

    • 变量名:HTTPS_PROXY,变量值:http://127.0.0.1:7890

  4. 点击 确定 保存。

  5. 重启终端、IDE 或编辑器,让新环境变量生效。


验证与排错

1. 验证环境变量是否生效

在 PowerShell 中执行:

 echo $env:HTTP_PROXY
 echo $env:HTTPS_PROXY

如果输出类似下面的内容,说明环境变量已经生效:

 http://127.0.0.1:7890
 http://127.0.0.1:7890

2. 测试网络访问

可以使用 curl 测试终端是否能通过代理访问外部资源:

 curl https://github.com

如果能返回 HTML 内容或正常响应,说明代理链路基本可用。

3. 清理 Git 的冗余代理配置

为了避免 Git 的专属代理配置覆盖系统环境变量,建议清理旧配置:

 git config --global --unset http.proxy
 git config --global --unset https.proxy

如果提示没有该配置项,可以忽略。

清理后执行:

 git config --global --list | Select-String "proxy"

如果没有输出,说明 Git 的专属代理配置已经清理干净。

4. 常见问题

  • 新终端没有生效:确认变量添加在「用户变量」区域,并重启终端或 IDE。

  • 端口不正确:检查代理软件的 HTTP 代理端口,常见端口有 78901080820171 等。

  • 代理软件未开启系统代理:本指南使用的是本地 HTTP 代理端口,代理软件本身仍需要保持运行。

  • 某些工具仍然失败:检查该工具是否单独配置过代理,必要时清理工具级配置。


取消代理配置

如果以后不再需要终端代理,可以执行:

 [Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "User")
 [Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "User")
 ​
 Remove-Item Env:HTTP_PROXY -ErrorAction SilentlyContinue
 Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue

执行后重启终端即可。


总结

统一使用 HTTP_PROXYHTTPS_PROXY 是 Windows 终端代理配置中更清爽、稳定、易维护的方式。后续更换代理软件或端口时,只需要更新这两个环境变量,大多数开发工具都会自动跟随生效。