我在过去几天试图解决这个问题。
首先,我在代理服务器之后工作,我已经使用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)之外的任何内容都不是我的设置选项。
答案 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
每次都会推送所有提交,直到您引用的提交 最后,最后一次推送将是增量推送,比推送所有内容要小得多。