13

我在这里看到了很多关于 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 deltas”上。

我的设置:

  • 带有 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 一开始就可以工作。

4

6 回答 6

6

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

我想也许这已经在最新版本的 Git 中得到了改进或修复,所以我升级到了 1.8.3。宾果游戏,现在可以了,我可以克隆了!

于 2013-06-13T12:08:46.260 回答
4

抱歉,我的英语很不好。希望你能理解。

我在这里遇到了同样的问题。我找不到并解决问题,但我终于能够结帐。当 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

完毕。

于 2013-02-07T10:26:39.090 回答
3

我有同样的问题,虽然我无法确定原因,但我认为比使用 verify-pack 并检查最后一次提交(如 cakyus 所解释的)稍微好一些。

将最后一次提交作为主分支检查的问题是您不能保证该提交特别属于该分支,所以我所做的是:

  • 中断挂在解决增量问题上的 git 进程Ctrl+C
  • 获取分支信息git fetch
  • 签出主分支(或任何其他分支)git checkout master

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

于 2013-04-17T09:49:16.227 回答
0

不是答案,只是提供症状以缩小此问题的原因。我有完全相同的问题。它只是坐在那里“解决增量”。

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

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

于 2012-11-27T22:35:22.320 回答
0

对我有用的解决方案来自此博客http://stas-blogspot.blogspot.ca/2012/12/git-hangs-after-resolving-deltas.html的评论:

由于包文件已正确下载,您需要做的就是使用 Ctrl+C 中断进程,执行 git fetch 从远程存储库获取分支信息,并使用 git checkout 再次签出主(或任何其他)分支掌握。

所以解决方案就是杀死挂起的进程,然后:

git fetch
git checkout
于 2013-11-21T00:08:05.093 回答
0

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

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

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

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

请参阅SZEDER Gábor ( ) 的提交 79e3aa6(2019 年 3 月 31 日(由Junio C Hamano 合并 -- --提交 da924b5中,2019 年 4 月 25 日)szeder
gitster

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

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

在循环期间显示进度条,check_objects()让用户知道某些事情仍在进行。

于 2019-04-27T21:05:28.667 回答