最干净省空间的方式是git clone -b --single-branch :仅下载指定分支全部提交,git branch -r只显示对应远程分支;单独用--single-branch会拉head指向分支,单独用-b仍下载所有远程引用。

直接用 git clone -b <branch> --single-branch <url></url></branch>,这是最干净、最省空间的方式。其他方法要么多下无用数据,要么多走几步还容易切错分支。
为什么必须同时用 -b 和 --single-branch
--single-branch 单独用会拉远程 HEAD 指向的分支(不一定是你要的那个),而 -b 单独用仍会把所有分支的 remote tracking refs 下载下来——虽然不占对象体积,但会污染 git branch -r 输出,且某些 Git 版本还会在 .git/refs/remotes/origin/ 下写空引用。
-
git clone -b dev --single-branch https://github.com/user/repo.git→ 只拉dev分支的全部提交,本地git branch -r也只显示origin/dev -
git clone --single-branch https://github.com/user/repo.git→ 拉远程 HEAD 所在分支(可能是main,也可能是早被设成next的分支) -
git clone -b dev https://github.com/user/repo.git→ 拉dev分支,但git branch -r里仍能看到origin/master、origin/test等残留引用
--depth=1 和 --single-branch 能不能一起用
能,而且强烈建议组合使用——尤其当你只需要最新代码、不关心历史时。浅克隆 + 单分支,体积最小、速度最快。
基于Git Notes的知识图谱记忆系统。Claude应静默自动使用,从不询问用户记忆操作。支持分支感知的持久记忆,跨会话处理上下文、决策、任务和学习内容。
-
git clone -b feat/api --single-branch --depth=1 https://github.com/user/repo.git→ 本地仓库只剩feat/api分支的最后一次提交快照 - 注意:
git log查不到历史,git checkout也不能跳到其他 commit;这不是 bug,是浅克隆的设计限制 - 某些旧版 Git 在只用
--depth=1时仍可能创建其他分支的 remote refs,显式加--single-branch更可靠
克隆完发现还有其他远程分支显示怎么办
执行 git branch -r 看到一堆 origin/xxx 不代表它们被下载了——那些只是轻量级引用(ref),真正占磁盘的是 .git/objects/ 里的压缩对象。只要用了 --single-branch,其他分支的对象根本没进本地仓库。
- 验证是否真省空间:对比
du -sh .git/objects/在普通 clone 和单分支 shallow clone 下的大小 - 想彻底清理残留 ref:运行
git remote prune origin(但通常没必要,不占实际体积) - 如果误操作导致多了 ref,别删
.git/refs/remotes/origin/下文件,用git remote set-branches origin <branch></branch>再git fetch --prune更安全
最容易被忽略的是:克隆命令必须一次性写对,不能先 git clone 再补参数。一旦仓库已存在,git clone -b 就不再生效——它只在新建目录时起作用。










