【问题标题】:Git push hangs for a large repository大型存储库的 Git 推送挂起
【发布时间】:2014-07-22 05:22:54
【问题描述】:

最近几天我正在尝试解决这个问题。

首先我在代理后面工作,我已经使用 Cntlm 设置了一个连接,我尝试在我的 Visual Studio Online 帐户上创建一个小型存储库,一切都按预期工作,我能够克隆和推。

我创建了另一个存储库,这次更大(整个存储库大约 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   

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

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

【问题讨论】:

    标签: git azure-devops


    【解决方案1】:

    如果无法选择推送所有大型 repo(出于任何原因),那么您可以考虑在服务器上传输同一 repo 的 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
    

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

    【讨论】:

    • 我无权访问服务器(它是 Visual Studio Online),但您的第二个选项听起来可能可行。问题是第一次提交本身大约是 400MB。不确定它是否能解决问题。我尝试删除日志(删除 .git)并执行 init 并再次尝试推送 - 也没有用。
    • @DimitarDimitrov 也许您可以将第一个提交拆分为较小的提交? (stackoverflow.com/a/6217314/6309, stackoverflow.com/a/4307158/6309)
    • 感谢您的帮助,是的,我相信这是我目前唯一的选择。我显然不是 git 专家,您能否告诉我如何拆分第一个提交(如果可能的话,甚至可以拆分当前提交)?
    • @DimitarDimitrov 这是基于我在之前的链接中引用的git rebase -i。要重新定位 first 提交,请添加 --root,正如我在 stackoverflow.com/a/2309391/6309 中提到的那样。
    • 是的,让我试一试。阅读git rebase :)
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2013-07-22
    • 2011-03-05
    相关资源
    最近更新 更多