git clone速度慢的优化方案【实测】

轻明同学_3372

轻明同学_3372

2026-04-12

1126人浏览

原创

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

git clone速度慢的优化方案【实测】

换源:直接替换 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。不需要全部代码时,可用浅克隆 + 稀疏检出跳过无关目录。

openclaw-gitbak
openclaw-gitbak

使用 Git 备份/恢复 OpenClaw 配置和工作区。

下载
  • 先初始化空 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)实际可达,然后固定用它,而不是堆砌多个配置。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3563

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

795

4

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5507

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2408

6

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

2026.01.21

8465

27

GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

2026.04.02

858

19

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

6039

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1780

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

1034

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习