You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git拉取代码报fatal: HTTP request failed错误,推送正常求排查

解决Git Pull失败但Push正常的问题

嘿,我来帮你拆解这个有点诡异的问题——毕竟能正常push但pull报错HTTP请求失败,确实不符合常规逻辑!结合你已经试过Stack Overflow方案的情况,咱们换几个针对性的方向排查:

一、先排查HTTPS凭证与缓存异常

虽然push正常,但pull可能触发了不同的凭证校验逻辑:

  • 清除Git全局的凭证缓存,执行命令:
    git config --global --unset credential.helper
    
    之后重新执行git pull origin master,会提示你输入GitHub的个人访问令牌(PAT,现在GitHub已经不支持密码登录了,如果你之前用的是密码,得先去GitHub生成PAT)。
  • 检查系统级的凭证存储:Windows用户去「凭据管理器」找GitHub相关条目删除;Mac用户打开「钥匙串访问」搜索GitHub,删掉对应的密码条目,再重新尝试pull。

二、刷新远程仓库的refs信息

报错里提到的info/refs是Git用来同步分支信息的关键文件,可能本地缓存的远程refs已经失效:

  • 强制刷新远程仓库信息,执行:
    git remote update origin --prune
    
    这个命令会同步远程仓库的最新分支状态,清除本地过时的refs记录。
  • 检查本地仓库的配置文件,打开.git/config,确认[remote "origin"]下的url字段完全正确,没有拼写错误、多余空格或者特殊字符。
  • 尝试强制指定分支映射拉取:
    git pull origin master:master
    

三、排查网络与代理干扰

有些网络环境会对Git的pull请求做特殊限制,但不影响push:

  • 关闭Git的全局代理设置:
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    
    之后尝试pull,看看是不是代理导致的请求失败。
  • 切换网络环境:比如从公司内网换成手机热点,测试是否是防火墙或网关拦截了pull请求。
  • 改用SSH协议拉取:生成SSH密钥并添加到GitHub后,修改远程仓库地址:
    git remote set-url origin git@github.com:username/projectname.git
    
    再执行git pull origin master,绕开HTTPS协议的问题。

四、检查Git版本兼容性

老版本的Git可能对GitHub的HTTPS API支持不完善:

  • 执行git --version查看版本,如果是2.20.x之前的版本,建议升级到最新稳定版,新版本修复了很多HTTPS请求相关的bug。

最后:排除远程仓库临时故障

虽然概率不高,但可以确认下GitHub的服务状态,看是否有info/refs相关的服务异常,等几个小时再尝试pull。

内容的提问来源于stack exchange,提问作者nixxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:10:28