--depth

发布时间 2023-05-26 10:42:45作者: 轻轻的吻
我们经常会用 git clone 来下载项目,但遇到大项目的时候,clone 就很慢,比要等很久。

当然,还有更慢的项目。这类项目可以通过 --depth 1 来加速:

git clone --depth 1 https://github.com/facebook/react

这速度快了有几十倍吧!越大的项目加速效果越明显。下载下来的代码少了历史 commit

当 git clone 下载大项目的时候,加个 --depth 1 可以提速几十倍。

下载下来的项目也可以正常的 pull 和 push。

这是因为 git 是通过 commit、tree、blob 的对象存储的,每个 commit 是关联这些对象的入口。

depth 1 只会下载最后一个 commit 关联的 object,下载内容更少,所以速度快很多。

但这种方式有两个问题:

  • 切换不到历史 commit
  • 切换不到别的分支

没有历史 commit 可以通过 git pull --unshallow 解决。

切不到别的分支是因为 fetch 配置导致的,配置成 +refs/heads/*:refs/remotes/origin/* 也就可以了,也就是拉取远程所有分支代码到本地。

这样再 fetch 和 pull 就会拉取所有分支的新 commit,也可以正常的切分支。

--depth 1 在下载大项目的时候,或者 build 时下载代码的时候,都很有意义。它提高下载速度导致的俩后遗症也都可以解决。