coverPiccoverPic

项目太大了,git clone 克隆不下来怎么办?

问题

我想看看 Nest 的源码,然后去克隆它的仓库下来看看,在大概下载了 10 MB 内容的时候卡住了:

cmd
  1. $ git clone https://github.com/nestjs/nest.git
  2. Cloning into 'nest'...
  3. remote: Enumerating objects: 177754, done.
  4. remote: Counting objects: 100% (1055/1055), done.
  5. remote: Compressing objects: 100% (481/481), done.
  6. Receiving objects: 10% (18037/177754), 10.71 MiB | 123.00 KiB/s

等了许久后却报错了:

cmd
  1. error: RPC failed; curl 16 Error in the HTTP2 framing layerKiB/s
  2. error: 5133 bytes of body are still expected
  3. fetch-pack: unexpected disconnect while reading sideband packet
  4. fatal: early EOF
  5. fatal: fetch-pack: invalid index-pack output

经多次尝试仍无法下载。

解决方法(?)

这大概是仓库太大了下不下来,查了几个方法,例如修改缓冲区http.postBuffer大小:

cmd
  1. git config --global http.postBuffer 157286400

这对我来说没有作用。

有的人认为或许是代理服务器的原因,例如 Nginx 的proxy_max_temp_file_size限制,但是我没有使用代理,总之完全不知道什么原因。

可行的解决方法就是,git clone的时候设置--depth=1来仅拉当前分支最新代码,而忽略历史记录,来减少拉取的体积。

cmd
  1. git clone 仓库url --depth=1

最终是拉下来了:

cmd
  1. $ git clone https://github.com/nestjs/nest.git --depth=1
  2. Cloning into 'nest'...
  3. remote: Enumerating objects: 2199, done.
  4. remote: Counting objects: 100% (2199/2199), done.
  5. remote: Compressing objects: 100% (1809/1809), done.
  6. remote: Total 2199 (delta 490), reused 1137 (delta 268), pack-reused 0
  7. Receiving objects: 100% (2199/2199), 1.48 MiB | 80.00 KiB/s, done.
  8. Resolving deltas: 100% (490/490), done.
  9. Updating files: 100% (2040/2040), done.

另外,想要指定分支的话,还可以使用-b 分支名 --single-branch

cmd
  1. git clone -b master --single-branch 仓库url --depth=1

--depth=1克隆代码后,本地只能看见当前分支的最新 commit,这时候,可以用

cmd
  1. git pull --unshallow

来拉取所有的 commit。(当然,我遇到情况是拉取是失败的,因为需要下载所有 commit 又回到开头的问题了)

0 条评论未登录用户
Ctrl or + Enter 评论
🌸 Run