Git push挂起了一个大型存储库

时间:2014-06-02 06:43:49

标签: git azure-devops

我在过去几天试图解决这个问题。

首先,我在代理服务器之后工作,我已经使用Cntlm建立了连接,我尝试在我的Visual Studio Online帐户上创建一个小存储库,一切都按预期工作,I& #39;能克隆并推送。

我已经创建了另一个存储库,这次更大(整个回购大约是800MB),当我试图推送时。它需要我通过身份验证周期,然后它就会挂起(我已经将它挂了24小时而没有任何反应)。我按照其他地方的建议将git的postBuffer增加到了524288000,但这并没有帮助。

我还设置了

GIT_CURL_VERBOSE=1

然后当我跑:

git push origin master -v

这就是卡住的地方:

> POST /DefaultCollection/_git/PROJex/git-receive-pack HTTP/1.1
Authorization: Basic ZGRpbWl0cm92OkQxbxxxxxx               
User-Agent: git/1.9.2.msysgit.0                             
Host: [user].visualstudio.com                         
Accept-Encoding: gzip                                       
Content-Type: application/x-git-receive-pack-request        
Accept: application/x-git-receive-pack-result               
Content-Length: 37423253      

* Connection #1 to host localhost left intact   

我看到内容长度明显大于小型回购。我还应该注意,有500多个提交日志。

现在我认为它可能是一个代理问题,所以我尝试了在不同的网络上没有代理,我得到了相同的结果。除了http(s)之外的任何内容都不是我的设置选项。

1 个答案:

答案 0 :(得分:5)

如果推送所有大型仓库不是一个选项(出于任何原因),那么您可以考虑在服务器上转移同一个仓库的 bundle 并提取(在该捆绑包中的服务器)。也就是说,如果您有权访问服务器。

transfer is made easier by the fact a git bundle only generates one file


另一种选择(如果您无权访问服务器)是将您的推送分成几个较小的推文:

A<-B<-C<-D<-E

您可以尝试:

git push origin B:master
git push origin D:master
git push origin master

每次都会推送所有提交,直到您引用的提交 最后,最后一次推送将是增量推送,比推送所有内容要小得多。