挂在“POST git-receive-pack(分块)”

我会诚实地说,我对git的内部知之甚less。

我已经上演了一个40MB的目录,但是当我推动…

$ git push --verbose --progress Pushing to https://acron0@bitbucket.org/acron0/project.git Password for 'https://acron0@bitbucket.org': POST git-receive-pack (chunked) 

这是20分钟。 我假设它挂了,但是…有什么我可以做,找出原因?

这是Git中的一个错误; 当使用HTTPS时,它将使用分块编码进行超过一定大小的上传。 那些不起作用。

一个简单的解决办法是告诉git不要大块,直到一些荒谬的大尺寸值,如:

 git config http.postBuffer 524288000 

可能是你的凭据。 使用git + ssh协议而不是https。

使用SourceTree推到BitBucket我每隔几个月就会遇到这个错误。 事实certificate,我只需要再等五分钟就可以自行sorting。 它看起来已经被吊死了,诱惑就是取消,然后再试一次,但是可能会在那里停留一段时间。 我知道这已经回答了,但是我的提交量可能达到几百kb,而不是原始海报正在谈论的40mb。

如果你发现这个网站是因为BitBucket失败的话,那么请检查这个答案:

  • 如何使用git扩展与bitbucket存储库?

特别是Nicholas Pickering和Simon Tewsi关于需要粘贴到BitBucket对话框中的关键部分的评论。

使用Git 2.13(Q2 2017),您将能够将http.postBuffer设置为一个非常大的数字(即在某些平台上比ulong大)。

见David Turner( csusbdt ) 提交的37ee680 (2017年4月11日) 。
(由Junio C gitstergitster合并-于2017年4月24日提交4c01f67 )

http.postbuffer :允许全部的ssize_t

不幸的是,为了在服务器不支持分块编码的情况下推送一些大的回购http postbufferhttp postbuffer有时必须超过2千兆字节。
在64位系统上,这是行的:我们只是malloc一个更大的缓冲区。

这意味着我们需要使用CURLOPT_POSTFIELDSIZE_LARGE来设置缓冲区大小。