解析增量后,带有NTLM代理的git clone会挂起

时间:2012-11-20 12:35:45

标签: git https clone ntlm

我在这里看到很多关于git和代理主题的问题,但没有一个能解决我的问题。 我正在从Bitbucket克隆一个git存储库。从我的家庭网络一切正常,但挂起工作,我们使用代理与NTLM身份验证。请参阅git clone命令的输出:

$ git clone https://my_user@bitbucket.org/my_user/my_project.git --verbose
Cloning into 'my_project'...
Password for 'https://my_user@bitbucket.org':
POST git-upload-pack (174 bytes)
remote: Counting objects: 548, done.
remote: Compressing objects: 100% (367/367), done.
remote: Total 548 (delta 216), reused 0 (delta 0)
Receiving objects: 100% (548/548), 5.28 MiB | 533 KiB/s, done.
Resolving deltas: 100% (216/216), done.

git clone命令总是挂起“Resolving delta”。

我的设置:

  • 带有msysgit 1.8.0的Windows 7 64位
  • 代理配置:

    $git config --global http.proxy http://MY_DOMAIN\\\my_user:my_password@http-proxy:8080
    

似乎问题在某种程度上与git对象大小有关,因为当我只在我的存储库中存在少量文件时,git clone就开始工作了。

6 个答案:

答案 0 :(得分:3)

对不起,我的英语非常糟糕。希望你能理解。

我在这里遇到了同样的问题。我无法找到并解决问题,但我终于能够结账了。当git clone挂起“Resolving deltas”时,杀死git进程。因此,您有文件夹my_project和文件.git\objects\pack\pack-<sha1>.pack。现在,我们需要找到修订号。在下面输入以下命令:

git verify-pack -v .git\objects\pack\pack-<sha1>.pack | grep "commit" | more

,输出如下:

98c9f779992fc9a52372e0a1a76647e5d9ca5e01 commit 340 227 12
b6435d98f7b62ce69c59ce582beddf547f26d8a2 commit 305 208 239
a2a39a0c707b2919c87b194dca9a0dea307ce069 commit 239 159 447
...
4803e013b30dc9d31e4a8dba7e1a2d65e6f61422 commit 243 167 6768
-- More  --    

顶部的98c9f779992fc9a52372e0a1a76647e5d9ca5e01是HEAD修订版,因此您可以结帐到这一点:

git checkout -b master 98c9f779992fc9a52372e0a1a76647e5d9ca5e01

完成。

答案 1 :(得分:3)

我用Git 1.7.11打了同样的问题。我从GitHub克隆的所有尝试都会导致挂起的进程没有文件。我在类似的问题中尝试了verify-pack诀窍和许多其他建议,但没有任何效果。

我想可能在最新版本的Git中已经改进或修复了,所以我升级到了1.8.3。宾果,现在它有效,我可以克隆!

答案 2 :(得分:2)

我有同样的问题,虽然我无法确定原因,但我认为这是一个比使用verify-pack更好的解决方法,并检查cakyus解释的最后一次提交。

检出最后一次提交作为主分支的问题是你不能保证提交特别属于那个分支,所以我做的是:

  • 中断使用Ctrl+C
  • 解析增量的git进程
  • 使用git fetch
  • 获取分支信息
  • 使用git checkout master
  • 结帐主分支(或任何其他分支)

这使得git设置我的分支主机来跟踪远程分支主机并正确解压缩文件,同时保留分支信息。

答案 3 :(得分:0)

不是答案,只是提出症状来缩小这个问题的原因。 我有完全相同的问题。它只是坐在那里“解决三角洲”。

v1.7.10 Win2008 R2企业版 已为HTTP和HTTP配置代理。

我会得到一个同事登录服务器(.gitconfig是他的漫游配置文件的一部分),看看它是配置还是安装。

答案 4 :(得分:0)

此博客评论http://stas-blogspot.blogspot.ca/2012/12/git-hangs-after-resolving-deltas.html

对我有用的解决方案
  

由于已正确下载包文件,您只需要使用Ctrl + C中断该过程,执行git fetch以从远程存储库获取分支信息并再次检出主(或任何其他)分支。一个git checkout master。

所以解决办法就是杀死悬挂过程然后:

git fetch
git checkout

答案 5 :(得分:0)

两件事情(2019年4月,七年后):

  1. 不直接声明NTML代理URL。将HTTP_PROXYHTTPS_PROXY环境变量设置为HTTP代理(不是NTLM代理),并使用genotrance/px
    通过运行px(重定向到您的NTLM代理),您可以引用经典的HTTP代理(通常为http://localhost:3128,不需要您的登录名/密码!),这样会更好。

  2. 如果“解决三角洲”仍然需要时间,请确保使用Git 2.22(2019年第二季度)

第二点:“ index-pack”步骤中已添加进度指示器,这通常使用户在“ git clone”中等待完成。

请参见commit 79e3aa6SZEDER Gábor (szeder)(2019年3月31日)。
(由Junio C Hamano -- gitster --commit da924b5中合并,2019年4月25日)

  

index-pack:在检查对象时显示进度

     

当“ git index-pack”由“ git clone”运行时,其check_objects()函数通常不会花费很长时间引起关注,但是我只是遇到了这种情况花了大约一分钟左右的时间:克隆linux.git时,我无意中给我的小型笔记本电脑施加了一些内存压力,然后两者之间有相当长的沉默   “ Resolving deltas”和“ Checking connectivity”进度条。

     

check_objects()循环中显示进度条,以使用户知道仍有事情在发生。