
字节笔记本
2026年10月7日 · 约 3 分钟读完
只要最近一次提交用深度一
用户要的是只拿仓库最近一次提交。对话给了三段命令。真正少下载历史的是第一段。后两段解决的不是同一件事。
深度一才是少下载
克隆时加上深度参数,值写一:
git clone --depth 1 <repository-url>这一下只取远端当前分支尖端的那一次提交,以及这次提交里的文件。更早的历史不进本地。下载量和占用都会小一截。地址换成真实仓库。尖端之后若还要更早的提交,这次克隆里没有那些对象,要再加深或重新克隆。
孤儿分支发生在已经克隆之后
第二段假定仓库已经完整克隆。它新建一个没有父提交的分支,把当前文件全部再提交一次,提交说明是只保留最新提交,然后删除名为 main 的分支,再把当前分支改名为 main。
这不是向 GitHub 只要最后一次提交。完整历史在删除分支之前已经下载过了。删掉的是分支指针。旧对象往往还在本地,直到垃圾回收才可能清掉。若 main 上有没推送的提交,删除是永久性的。这段不能当成节省流量的办法。
稀疏检出限制的是目录
第三段先初始化空仓库,添加名为 origin 的远端,再启用锥形稀疏检出。接下来的设置命令没有给出任何目录。稀疏检出决定工作区里放哪些路径,不决定历史有多短。没有目录参数,它不会自动变成只要最后一次提交。
同段后面的拉取写了深度一,并且写死分支名 main。深度才是提交条数。分支名若不是 main,这行会失败。稀疏检出和深度是两个开关,对话把它们写进了同一段。

先用第一段
新目录里只要最近一次提交,用带深度一的克隆。已经克隆过、只是想少占磁盘,不要用删除主分支的那段。要少检出某些目录,再单独写稀疏检出的路径。路径和深度各写各的。
远端默认分支不一定叫 main。深度一仍然跟着你指定的分支走。指定错了分支,拿到的是那条分支的尖端,不是你以为的默认分支。
克隆完成后,日志里只有一条提交。这是深度生效的标志。若日志很长,深度没有加上,或之后又把历史拉全了。
占位地址不要原样执行。换成要拿的仓库。私有仓库还要你自己的认证,对话没有写认证。
孤儿提交的说明文字是只保留最新提交。说明不会改变对象是否还在磁盘上。看占用要用仓库体积,不要看说明。
删除主分支之前,对话没有要求先确认工作区是干净的。有未提交修改时,后面的全部添加会把这些修改卷进新的根提交。
稀疏检出启用时用了锥形模式。锥形模式按目录收敛。没有目录,收敛没有目标。不要把这行理解成深度的另一种写法。
三选一就选深度一。另外两段留在原对话里,是为了指出它们做的是别的事。

拉取深度写在已经设置稀疏检出之后。若设置那步因为没有目录而失败,后面的拉取不会执行。失败信息在设置,不在深度。
已经用深度一克隆的仓库,再执行孤儿分支那段,会在浅历史上面再造一个新根。结果更难读,不会更浅。
主分支改名只影响本地这一份。远端的分支名不会因为你本地改名而改变。下次推送前要看跟踪关系还在不在。
对话建议优先用第一段。这个建议和命令本身一致。优先的意思是不要先走会删除分支的那一段。



