git clone 慢应优先排查真实瓶颈:卡在 counting objects 多为网络问题,可换 https 镜像源或 ssh over 443;卡在 resolving deltas 则与本地性能有关,换源无效;推荐清华镜像或配置 ssh 走 443 端口并配合 sparse-checkout 减体积。

换源:直接替换 GitHub 的默认 URL 协议
GitHub 默认走 HTTPS,国内 DNS 解析和 TLS 握手常卡在 github.com 或 github.global.ssl.fastly.net。实测中,把 HTTPS 换成 Git 协议(git://)基本不可用(已被 GitHub 废弃),真正有效的做法是改用 SSH + 域名映射或镜像源。
- 优先尝试用国内镜像站的 HTTPS 地址,例如清华源:
@#@#@#@#@#@#@#@#@#@0不适用 clone,但可配合git config --global url."@#@#@#@#@#@#@#@#@#@1" insteadOf "@#@#@#@#@#@#@#@#@#@2" - 更稳定的是改用 SSH 地址(需提前配置密钥):
git@github.com:user/repo.git→ 实测握手快、复用连接,但首次 clone 仍可能卡在ssh: connect to host github.com port 22: Connection timed out,说明 22 端口被限,此时要配 SSH Config 走 443 端口 - 不推荐用
http://协议(无加密,部分仓库拒绝)
SSH 配置走 443 端口绕过防火墙拦截
GitHub 支持通过 SSH over HTTPS(端口 443)连接,只要你的网络允许访问 github.com:443(通常允许),就能绕过对 22 端口的封锁。
- 在
~/.ssh/config中添加:Host github.com HostName ssh.github.com Port 443 User git
- 然后确保已添加公钥到 GitHub Settings → SSH and GPG keys
- 执行
ssh -T git@github.com测试是否返回Hi username! You've successfully authenticated... - 若失败,检查是否误写成
HostName github.com或漏掉Port 443;常见错误是本地开了代理却没关系统代理,导致 SSH 走了 socks 通道而超时
用 sparse-checkout 减少下载体积(适合大仓库)
有些仓库(如 tensorflow、android/platform_manifest)历史提交巨大,完整 clone 动辄几个 GB。不需要全部代码时,可用浅克隆 + 稀疏检出跳过无关目录。
- 先初始化空 repo:
git init myrepo && cd myrepo - 关联远程并只拉取最新提交(不带历史):
git remote add origin @#@#@#@#@#@#@#@#@#@3 && git config core.sparseCheckout true - 指定要检出的路径(例如只想要
src/utils/):echo "src/utils/" >> .git/info/sparse-checkout - 拉取并检出:
git pull --depth=1 origin main - 注意:
--depth=1不能和--sparse同时用于 clone,必须分步;且后续若要切分支或查历史,得取消 sparse 或 fetch 更多对象
排查真实瓶颈:别盲目换源
速度慢不一定是 GitHub 的问题。先运行 git clone -v @#@#@#@#@#@#@#@#@#@3,观察卡在哪一步:
- 卡在
Resolving deltas...:说明对象解压或索引构建慢,和 CPU/磁盘有关,换源无效 - 卡在
remote: Counting objects阶段:大概率是网络层问题(DNS、TLS、MTU、中间设备劫持) - 卡在
Receiving objects但速率长期为 0:可能是本地杀毒软件扫描 Git 临时文件,关闭实时防护再试 - 用
curl -I @#@#@#@#@#@#@#@#@#@5和ping github.com对比延迟,如果 ping 不通但 curl 成功,说明 ICMP 被禁但 HTTPS 可用,应优先走 HTTPS 镜像而非折腾 SSH
Git clone 慢的根因差异很大,同一台机器换 Wi-Fi 和有线网络表现可能完全不同。最省事的方案往往是:确认当前网络下哪个协议(HTTPS / SSH over 443)实际可达,然后固定用它,而不是堆砌多个配置。











