Skip to content

git clone 速度慢、总是超时?6 种加速方法实测

git clone 一个 GitHub 仓库,速度只有几 KB/s,甚至卡在 Receiving objects 直接超时 —— 这是国内开发者最常见的痛点。

本文给出 6 种由易到难的加速方法,每种都附可直接复制的命令。建议从方法一开始试,大多数人用前两种就能解决。

先判断问题

如果连 GitHub 网页都打不开,可能是 DNS 或网络层问题,建议先看 网络排障 栏目;如果网页能开、只是 clone 慢,继续往下看。

方法一:使用镜像代理前缀(最简单,推荐)

在原仓库地址前面加一个加速代理前缀,是零配置、最快见效的方法。

bash
# 原地址
git clone https://github.com/user/repo.git

# 加速:在前面拼接镜像代理域名(示例,请替换为当前可用的加速站)
git clone https://<加速代理域>/https://github.com/user/repo.git

优点:无需任何本地配置,复制即用。 缺点:加速站可能不稳定或失效,需留意更换;不适合需要频繁 push 的开发。

注意

公共加速站的可用性会变化。请以当前实际可用的镜像为准,并避免在其上传输私有/敏感代码。

方法二:给 Git 配置本地代理(开发者首选)

如果你本机已经运行了代理客户端(通常监听 7890 / 1080 等端口),直接让 Git 走代理最稳定。

bash
# 为 https 协议的 GitHub 走 HTTP 代理(把 7890 换成你的实际端口)
git config --global http.https://github.com.proxy http://127.0.0.1:7890

# 取消
git config --global --unset http.https://github.com.proxy

如果想让所有 http/https 请求都走代理:

bash
git config --global http.proxy  http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# 取消
git config --global --unset http.proxy
git config --global --unset https.proxy

SOCKS5 代理写法:

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

优点:一次配置,长期有效,push/pull 全程加速。 缺点:需要本机已有可用代理。

方法三:改用 SSH 协议 + 443 端口

有时 HTTPS(443)被限速,而 SSH(22)又常被封。可以让 SSH 走 443 端口兼顾两者。

编辑 ~/.ssh/config(Windows 为 C:\Users\你的用户名\.ssh\config):

text
Host github.com
  Hostname ssh.github.com
  Port 443
  User git

然后用 SSH 地址克隆:

bash
git clone git@github.com:user/repo.git

验证连通:

bash
ssh -T git@github.com
# 出现 "Hi username! You've successfully authenticated" 即成功

方法四:浅克隆(减少下载量)

如果你只需要最新代码、不需要完整提交历史,用浅克隆可以大幅减少下载体积

bash
# 只拉取最近 1 次提交
git clone --depth 1 https://github.com/user/repo.git

# 只拉取某个分支的最新提交
git clone --depth 1 --branch main --single-branch https://github.com/user/repo.git

之后如果需要完整历史:

bash
git fetch --unshallow

优点:对大仓库效果显著。 缺点:历史不完整,不适合需要 git log 全量历史或二分定位的场景。

方法五:修改 Hosts,绕开 DNS 污染

GitHub 慢有时是 DNS 解析到了糟糕的 IP。手动指定较快的 IP 可以缓解。

  1. 查询当前较优的 GitHub 相关 IP(可用在线 DNS 查询工具查 github.comgithub.global.ssl.fastly.netraw.githubusercontent.com)。
  2. 编辑 hosts 文件:
    • Windows:C:\Windows\System32\drivers\etc\hosts(需管理员)
    • macOS / Linux:/etc/hosts(sudo 编辑)
text
140.82.112.3      github.com
185.199.108.133   raw.githubusercontent.com
  1. 刷新 DNS 缓存:
bash
# Windows
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

优点:不依赖代理。 缺点:IP 会变,需定期更新;效果不如代理稳定。

方法六:用 CDN 加速静态资源与 Release

克隆之外,下载 Release 大文件raw 文件慢时,可借助公共 CDN(如 jsDelivr)镜像 GitHub 静态资源:

bash
# 原 raw 地址
https://raw.githubusercontent.com/user/repo/main/file.txt

# 通过 jsDelivr 加速
https://cdn.jsdelivr.net/gh/user/repo@main/file.txt

方法对比一览

方法配置难度稳定性适用场景
一、镜像代理前缀⭐ 极简中(站点可能失效)临时 clone 公开仓库
二、Git 走本地代理⭐⭐日常开发(推荐)
三、SSH 走 443⭐⭐SSH 被封时
四、浅克隆⭐ 极简大仓库、只要最新代码
五、修改 Hosts⭐⭐无代理、DNS 污染
六、CDN 加速⭐ 极简Release / raw 文件

小结

  • 最快见效:方法一(镜像前缀)或方法四(浅克隆)。
  • 长期最稳:方法二(Git 走本地代理)+ 方法三(SSH 443)。
  • 遇到具体报错(如 Failed to connect to github.com port 443),请看 网络排障 栏目。

想要更稳定省心的方案?

如果你经常需要访问海外技术资源,一条稳定的网络线路能省下大量折腾时间。可参考 代理与工具 栏目里的选型与配置指南。


本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。