git clone 速度慢主因是国际链路绕行,linux 下最有效方案是精准配置本地代理:https 克隆需同时设 http.proxy 和 https.proxy(均用 http:// 前缀),socks5 代理则用 socks5://;推荐按域名(如 github.com)配置避免影响内网服务,环境变量优先级高于 git config 但易误用。

Git clone 速度慢,不是你网速差,而是默认走的国际链路太绕。Linux 下最直接有效的加速方式,就是让 Git 流量走本地代理——但必须选对协议、端口和作用域,否则反而会失败或被忽略。
git config --global http.proxy 和 https.proxy 必须用对协议
Git 的 http.proxy 配置只影响 HTTP/HTTPS 协议的请求(也就是 git clone https://... 这类),对 SSH 完全无效。如果你用的是 HTTPS 地址克隆,那必须同时设置两个配置项:
-
git config --global http.proxy http://127.0.0.1:7890—— 注意是http://,不是https://,哪怕目标是 HTTPS 仓库 -
git config --global https.proxy http://127.0.0.1:7890—— 同样用http://前缀,这是 Git 的约定,不是笔误 - 如果代理是 SOCKS5(比如 Clash、V2Ray 默认开的),得写成
socks5://127.0.0.1:1080,不能写socks5h或漏掉:// - 端口号必须和你本地代理工具实际监听的端口完全一致;常见错误是把 HTTP 端口(如 7890)错配给 SOCKS5 配置,或反过来
只给 GitHub 加代理,避免污染其他国内 Git 服务
全局代理会影响所有 git clone 操作,包括公司内网 GitLab、Gitee 等。更稳妥的做法是按域名精准匹配:
git config --global http.https://github.com.proxy http://127.0.0.1:7890git config --global https.https://github.com.proxy http://127.0.0.1:7890- 这样配置后,
git clone https://gitee.com/user/repo.git不走代理,而git clone https://github.com/user/repo.git自动命中 - 注意:这个语法里
https://github.com是键名的一部分,不能省略协议,也不能写成github.com或带路径 - 验证是否生效:运行
git config --global --get http.https://github.com.proxy,有输出即表示配置已加载
环境变量比 git config 优先级更高,但也更容易被覆盖
Git 会优先读取 http_proxy 和 https_proxy 环境变量,哪怕 git config 里没设任何代理,只要这两个变量存在,Git 就会用它们。但这也带来隐患:
- 在终端里执行
export http_proxy=http://127.0.0.1:7890后,当前 shell 所有 Git 命令都走代理,包括git push到公司内网仓库——可能直接失败 - 如果 ~/.bashrc 里写了 export,每次开新终端都会自动启用,容易忘记关闭
- 某些 CI 环境或脚本中,环境变量可能被重置或未继承,导致代理失效,而
git config是持久化的,更可靠 - 临时禁用代理只需运行
unset http_proxy https_proxy,比删 config 更快,适合调试
真正容易被忽略的点是:Git 对代理地址的协议前缀极其敏感,http:// 和 socks5:// 不能混用,且子模块(git clone --recursive)会复用同一套代理配置——如果主仓库走 HTTPS 代理,子模块也必须能通过该代理访问其远程地址,否则卡在 submodule update 步骤。











