执行git clone 返回302错误码

git 同步远程仓库时报错:
error: RPC failed; HTTP 302 curl 22 The requested URL returned error: 302 fatal: the remote end hung

解决办法:

git config --global http.followRedirects true
原理:

首先了解HTTP 302表示的是什么错误,通过学习了解到302错误表示被请求的资源暂时转移(Moved temporatily),服务器端会给出一个转移后的URL,此后,客户端应按照转移后的URL再次请求,一般浏览器都会自动处理这种情况。

那么git是如何处理http[s]的呢?从此条日志可以看到git使用了curl或libcurl来做http[s]的客户端的,另外回顾使用sudo apt-get install git命令安装git时,也可以看到安装了git、git-man、libcurl3-gnutls这3个包,因此,可以从curl的使用入手分析,先查看了git clone的手册(man git-clone),没有找到什么有用信息,继续看curl手册(man curl),在查找302这个关键时发现-L选项正是处理此种情况的,那么是不是因为git没有使用这样的选项才报错,应当如何指定这种选项?带着这种疑问继续查看git配置手册(man git-config),在检索了带有关键字curl或http的配置后,发现配置项http.followRedirects描述的是如何处理资源重定向的,按照文档描述,默认配置initial只跟随一次,而设置为true后会跟随任意重定向,因此,将此值设为true(git config --global http.followRedirects true)继续尝试,结果命令正常完成,问题得到解决。

在解决此问题的过程中,还了解到将GIT_CURL_VERBOSE环境变量设置为1(export GIT_CURL_VERBOSE=1)可以观察到整个curl处理http[s]的全过程,是个调试git报curl相关错误的方法。除此之外,导出另外两个环境变量(export GIT_TRACE_PACKET=1和export GIT_TRACE=1)可以观察到更详细的过程,可以按需尝试一下。

感谢原创作者:https://www.sfysoft.com/2020/07/29/Git-Issues-and-Solution/index.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值