git clone RPC failed

1,150 阅读1分钟

问题描述

最近在拉代码的时候会遇到这个问题,原因是项目太大了,没有办法直接拉下来

error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly before end of the underlying stream
error: 3263 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

在网上找到的大部分的解决方法都是输入下面这两个指令:

git config --global http.version HTTP/1.1
git config --global http.postBuffer 524288000

即根据提示将 http 的版本切换到 1.1,然后将传输大小的限制改成 524288000

当然这两个指令也能解决问题,但有时候输入完这两个指令还是有可能会出现另外一个问题

error: RPC failed; curl 18 transfer closed with outstanding read data remaining
error: 539 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

也还是文件太大的问题,然后换一种思路,我只克隆最近一次 commit 的一个分支,这样这个项目文件就不会太大了

git clone https://github.com/baidu/amis.git --depth 1

果然可以了。

其他

  • git clone --depth 1 的好处是限制 clone 的深度,不会下载 git 写作的历史记录,可以大大加快克隆速度
  • depth 用于指定克隆深度,1 表示只克隆最近一次 commit
  • 适合用 git clone --dept 1 的场景:你只想 clone 最新版本来使用或学习,而不是参与整个项目