git大仓库拉取卡顿问题排查与解决方法

 更新时间:2026年05月19日 09:22:36   作者:小小小小宇  
在大仓库中执行 git fetch 或 git pull 迟迟没有反应,通常是由网络问题、数据量过大导致内存/缓冲区溢出、或认证卡死引起的, 下面我们就来看如何排查和解决吧

在大仓库中执行 git fetchgit pull 迟迟没有反应,通常是由网络问题数据量过大导致内存/缓冲区溢出、或认证卡死引起的。

(注:git pull 本质上是 git fetch + git merge,所以解决 fetch 的问题就能解决 pull 的问题。排查时建议先用 git fetch)。

你可以按照以下步骤逐步排查和解决:

第一步:开启调试模式(找出卡在哪)

不要干等,先让 Git 告诉你它在干什么。在命令前加上环境变量开启详细输出:

如果是 HTTPS 链接:

GIT_TRACE=1 GIT_CURL_VERBOSE=1 git fetch origin master -v

如果是 SSH 链接:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -v" git fetch origin master -v

根据输出的日志,你可以清楚地看到是卡在连接服务器(网络问题)、卡在鉴权(密码/密钥问题)、还是卡在下载对象(仓库太大)。

第二步:针对大仓库的专项优化

如果日志显示已经连上服务器,但卡在 Receiving objects 或长时间无响应,说明仓库太大,可以尝试以下方法:

1. 增大 Git 的通信缓冲区(最常见的解决方法)

大仓库拉取时很容易因为超出默认缓存大小而断开或假死。将缓冲区调大到 500MB 或 1GB:

git config --global http.postBuffer 524288000
# 如果还不行,可以尝试设为 1GB (1048576000)

2. 浅克隆/浅拉取(只拉取最新代码)

如果你不需要全部的历史记录,只想要最新的代码,可以限制深度:

git fetch origin master --depth 1

3. 无 Blob 拉取(Partial Clone)

这是 Git 较新的特性,特别适合大仓库。它会拉取所有的提交历史,但不下载具体的文件内容(Blob),只有在你 checkout 到具体文件时才按需下载:

git fetch origin master --filter=blob:none

4. 关闭/调整压缩(缓解 CPU 和内存压力)

如果你的电脑在处理巨型压缩包时卡死,可以尝试降低压缩率:

git config --global core.compression 0

第三步:排查网络与连接问题

如果日志显示卡在 Connecting to...,那就是网络问题。

1. 设置代理(如果访问的是 GitHub )

如果你本地开启了科学上网工具,Git 默认是不会走代理的,需要手动设置(假设你的代理端口是 7890):

# HTTPS 协议设置代理
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

2. 切换传输协议(SSH vs HTTPS)

  • 如果你用的是 HTTPS (https://github.com/...) 卡住,尝试换成 SSH 协议 (git@github.com:...)。
  • 反之亦然。有时候公司网络或运营商会限制某一种协议。
  • 修改方法:git remote set-url origin <新的SSH或HTTPS地址>

第四步:排查认证卡死问题

有时候 Git 是在等待你输入密码或确认 SSH 密钥,但提示框没弹出来或者被隐藏了。

测试 SSH 连接:如果你用的是 SSH,单独测一下能不能连通:

ssh -T git@github.com  # 如果是 GitLab 或 Gitee,替换为对应的域名

如果这里卡住,说明是 SSH 密钥配置错误或端口被封。

凭据管理器卡死:如果你用的是 Windows,Windows Credential Manager 有时会弹窗失败导致后台挂起。尝试在任务管理器中强制结束 git-credential-manager.exessh-agent.exe,然后重试。

总结建议操作顺序

  1. 先跑 GIT_TRACE=1 git fetch origin master -v 看日志。
  2. 如果是网络不通,配置代理切换 SSH/HTTPS
  3. 如果是仓库太大拉不动,依次执行:改大 Buffer -> 加入 --filter=blob:none 参数 -> 加入 --depth 1 参数。

到此这篇关于git大仓库拉取卡顿问题排查与解决方法的文章就介绍到这了,更多相关git大仓库拉取卡顿解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详谈git 提交代码步骤,干货

    详谈git 提交代码步骤,干货

    这篇文章主要介绍了详谈git 提交代码步骤。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 程序员用vscode听网易云的实现

    程序员用vscode听网易云的实现

    很多程序员在工作的时候都喜欢听歌,最近发现了一个vscode插件,可以直接使用vscode进行听歌,本文就详细的介绍一下如何使用,感兴趣的可以了解一下
    2021-12-12
  • XML CDATA的作用

    XML CDATA的作用

    当你用FLASH和xml结合做网站应用程序时,例如你做在我研究游戏排行榜中,当让人自由输入姓名时,人们可以输入一些符号,例如∶"<"、">"、"/"、"?"等,当生成XML时,会破坏了XML结构,使数据中断。
    2009-09-09
  • 使用git代替FTP部署代码到服务器的例子

    使用git代替FTP部署代码到服务器的例子

    这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量、节省时间,需要的朋友可以参考下
    2014-09-09
  • 算法系列15天速成 第八天 线性表【下】

    算法系列15天速成 第八天 线性表【下】

    上一篇跟大家聊过“线性表"顺序存储,通过实验,大家也知道,如果我每次向顺序表的头部插入元素,都会引起痉挛,效率比较低下,第二点我们用顺序存储时,容易受到长度的限制,反之就会造成空间资源的浪费
    2013-11-11
  • 关于rpc长连接与短连接的思考记录

    关于rpc长连接与短连接的思考记录

    文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实际应用中需要根据具体情况选择长连接还是短连接,并讨论了负载均衡器在RPC中的作用
    2025-01-01
  • Hadoop的eclipse的插件安装方法

    Hadoop的eclipse的插件安装方法

    这篇文章主要介绍了Hadoop的eclipse的插件安装方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 使用SSH协议解决Git推送失败问题的具体操作方法

    使用SSH协议解决Git推送失败问题的具体操作方法

    在日常开发中,我们常常会遇到 Git 推送失败的问题,尤其是在初次配置远程仓库或网络环境受限的情况下,本文将详细介绍如何通过配置 SSH 协议解决 Git 推送失败问题,需要的朋友可以参考下
    2026-01-01
  • 老生常谈计算机中的编码问题(必看篇)

    老生常谈计算机中的编码问题(必看篇)

    下面小编就为大家带来一篇老生常谈计算机中的编码问题(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 2018年GitHub账户注册图文教程(github从注册到使用)

    2018年GitHub账户注册图文教程(github从注册到使用)

    Github是最流行的代码库,里面存储着丰富的优秀的开源代码。不仅如此,作为一款免费的代码存储利器也是流的一逼,支持各种编程语言,代码显示效果堪称完美,可以随时随地查看自己记录的笔记
    2018-02-02

最新评论