首页/开发/Git 与协作速查/git clone --single-branch 单分支克隆
Git 基础与命令88 条

git clone --single-branch 单分支克隆

只抓取指定分支的引用,进一步压缩传输数据;默认与 --depth 组合使用。后续需要其他分支时可调整 remote 的 refspec 再拉取。

Git 与协作速查开发更新于 2026-10-13

单分支克隆是什么

默认克隆会取回远端全部分支的引用,对只想拿到一个分支的构建机或发布机来说,这部分传输是白花的时间与磁盘。git clone --single-branch 只抓取指定分支的引用,通常配合 --depth 一起用,把数据量压到最小。它并不是功能受限,而是「只要需要的」;后续真要用其他分支时,调整远端的 refspec 再拉取即可恢复。

基本信息

用途只克隆指定分支的引用
参数--single-branch 配合 --branch <名称>
常配合--depth 浅克隆,进一步减少数据量
恢复多分支git remote set-branches origin '*'
平台任意 Git 客户端与托管平台

典型使用场景

  • CI 构建只需要当前发布分支,用单分支浅克隆加速
  • 发布机只维护一条生产分支,无需拉全部历史
  • 代码审查时想快速拿到某个分支的干净副本
  • 磁盘与带宽受限的构建容器里克隆大型仓库
  • 临时验证某个分支能构建,不必拖着全部分支
  • 把单分支克隆作为默认模板写进流水线配置

常用示例

常用示例
git clone --single-branch -b main https://example.com/org/repo.git
git clone --single-branch --depth 1 -b release/2.4 https://example.com/org/repo.git  # 最省
# 后续想拿到别的分支时恢复多分支引用
git remote set-branches origin '*'
git fetch origin

参数组合

参数作用
--single-branch只取一个分支的引用
--branch <名称>指定要克隆的分支或标签
--depth 1只取最近一次提交,最快最小
只读构建场景(CI 或发布机)用单分支浅克隆可以少拉大量引用与历史,这是按需取用的优化,不是能力缺失。
恢复多分支后仍需 git fetch 才能真正把引用取到本地,set-branches 只是修改了远端的抓取范围。
与 --filter=blob:none 这类部分克隆相比,单分支克隆限制的是引用范围,部分克隆限制的是对象范围,两者可以叠加使用以进一步压缩首次下载量。

用在流水线里要注意

  • 构建机依赖的分支名要写死或用变量传入,避免默认分支变更导致拉错
  • 浅克隆下游步骤若需要比较历史或生成变更日志,要先补齐历史
  • 缓存目录与新克隆混用时确认缓存未被单分支引用限制
  • 克隆参数统一写进流水线模板,减少各任务配置漂移

易错点

  • 单分支克隆后 git branch -r 只能看到该分支,误以为远端没有其他分支,需要时先恢复 refspec
  • 用 --branch 指定标签名会检出到游离状态,切换前先确认自己处于 HEAD 分离状态
  • 浅克隆缺少历史,git log、blame 与内容检索都会受限,需要追溯时改用完整克隆
  • 把单分支克隆的仓库当日常开发仓库用,后续切分支会不断补取数据,反而更慢
  • 恢复多分支后忘记 fetch,本地引用仍不完整,排查分支缺失时容易走弯路
  • 构建机长期只拉一条分支却在多处复用同一份目录,切换分支时残留的旧引用会互相干扰,按任务隔离目录更稳

数据来源与参考

  • Git 官方文档:git-clone(--single-branch)
  • Git 官方文档:git-remote(set-branches)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌