网上有的文章修改 .git/info/sparse-checkout
以进行 sparse checkout,实际上 git
有自带的 sparse-checkout
命令。
操作步骤
带参数克隆仓库
1
| git clone --no-checkout --sparse --filter=blob:none git@github.com:<username>/<repo>.git
|
参数 | 含义 |
---|
--no-checkout | 不 checkout 到 HEAD |
--sparse | 开启 sparse-checkout 功能 |
--filter=blob:none | 不下载 blob 对象(重要,否则还是需要下载大量数据) |
refs: git clone
进入目录
指定需要 checkout 的目录
1
| git sparse-checkout add <path/to/>
|
refs: git sparse-checkout
注意:默认情况下 sparse-checkout 为 cone
模式。默认情况下 sparse-checkout
会包含根目录下的文件。
非 cone
模式存在诸多问题,因此 git 官方文档不建议使用非 cone
模式。
详见文档。
进行 checkout
1
| git checkout [<branch>]
|
可以看到下载的数据和等待的时间大大减少,
remote: Enumerating objects: 31, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 31 (delta 0), reused 0 (delta 0), pack-reused 20
Receiving objects: 100% (31/31), 616.91 KiB | 636.00 KiB/s, done.
Resolving deltas: 100% (1/1), done.
Updating files: 100% (32/32), done.
Already on 'main'
Your branch is up to date with 'origin/main'.