Git over HTTPS可以ls-list但不能克隆

时间:2012-10-19 17:50:20

标签: git curl https proxy bitbucket

虽然这是一个常见的问题,但这个问题与其他问题不同,当我发出git ls-remote https://myuser@bitbucket.org/myser/repo.git时,它会询问我的密码并给我结果:

tomaz:~/ $ git ls-remote https://tcanabrava@bitbucket.org/tcanabrava/randrepo.git
Password: 
1c8cd7266ad19de952db096a0f25ee16dc3cdace        HEAD
1c8cd7266ad19de952db096a0f25ee16dc3cdace        refs/heads/master

但是当我发出git clone ...

tomaz:~/ $ $git clone https://tcanabrava@bitbucket.org/tcanabrava/randrepo.git
Cloning into 'felipao'...
Password: 
error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly

我已经仔细查看了所有谷歌对这个特定错误的答案,没有什么能解决它。

  1. 我确定地址是正确的,它使用ls-remote列出分支。
  2. 已设置postBuffer = 52428800
  3. 代理很好,它使用ls-remote
  4. 列出分支
  5. 运行GIT_CURL_VERBOSE = 1太长,不幸发布在这里=(

3 个答案:

答案 0 :(得分:1)

使用Git 2.18(2018年第二季度),您现在可以更好地控制Git使用的curl

用于宣传Git接受gzip编码的HTTP客户端代码 从另一边;相反,只是让cURL库来做广告 并谈判最好的一个。

commit eaf6a1bcommit 1a53e69Brandon Williams (mbrandonw)(2018年5月22日) (由Junio C Hamano -- gitster --合并于commit 13e8be9,2018年5月30日)

  

remote-curl:接受curl支持的所有编码

     

配置curl以接受curl支持的所有编码,而不是   只接受gzip响应。

     

这解决了使用构建的curl安装时的问题   没有“zlib”功能。自aa90b96以来(启用信息/参考gzip   HTTP客户端中的解压缩,2012-09-19,Git 1.7.12.3)尽管gzip无法对其进行解码,我们最终仍会请求“libcurl”编码。
  更糟糕的是,我们最终没有收到明确的错误消息   回到“愚蠢”的http,产生一个令人困惑和困难   调试结果。

     

由于curl没有进行任何检查以验证它是否支持a   请求编码,而是设置curl选项CURLOPT_ENCODING   一个空字符串,表示curl应发送“Accept-Encoding”   标题仅包含curl支持的编码。

答案 1 :(得分:0)

这些是卷曲7.28错误的确切症状。如果你使用curl 7.28降级它或切换到SSH auth直到修复程序出来。

更多信息:

答案 2 :(得分:0)

我有类似的问题。我不确定有什么帮助,但是:

  1. 我将Curl降级为7.25
  2. 我使用.netrc更改了网址格式(http://stackoverflow.com/questions/5796171/git-clone-over-https-401-error-and-not-asking-for-username-or-password/5810821 #5810821)
  3. 一切都在git 1.7.10之下。我从1.8.0-1降级(在WebDav上拉和克隆只是在这个版本中不起作用。至于用1.7创建的repos。如果有人知道原因,请写评论)。