如何克隆仓库的所有远程分支

git clone 默认已拉取所有分支的数据,只是只为默认分支建了本地分支。检出任意远程分支用 git checkout <分支名>。完整镜像用 git clone --mirror(裸仓库,含全部引用),迁移仓库时用它。

最佳实践
Git 分支协作与合并示意

其实普通 git clone 已经把全部远程分支的数据拉下来了——git branch -r 能看到所有 origin/*,git checkout 分支名 即可为任一远程分支建本地分支。真正"把仓库完整镜像下来"(含所有分支、tag、引用)用 git clone --mirror。

普通克隆后检出其他分支

git clone https://github.com/org/repo.git
cd repo
git branch -r              # 查看所有远程分支
git checkout develop       # 自动建本地跟踪分支

批量为所有远程分支建本地分支

for b in $(git branch -r | grep -v HEAD | sed 's|origin/||'); do
  git branch --track "$b" "origin/$b" 2>/dev/null
done

一般没必要这么做——用到哪个检出哪个更符合 Git 的习惯。

完整镜像(迁移仓库用)

git clone --mirror https://github.com/org/repo.git repo.git
# 得到裸仓库(无工作区),含所有分支/tag/引用

# 推到新远程完成迁移
cd repo.git
git push --mirror https://gitlab.com/org/repo.git

--mirror vs --bare:mirror 是"完全克隆包括远程跟踪引用",bare 只转换分支结构。迁移场景一律用 --mirror。

常见问题(FAQ)

Q:mirror 克隆的仓库能当日常工作目录用吗?

不适合——它是裸仓库没有工作区。日常用普通 clone;mirror 用于迁移和备份。

Q:迁移后旧仓库的 PR、Issues 会跟过去吗?

不会。Git 只管理代码与引用;Issues/PR/Wiki 是平台数据,GitHub→GitLab 这类迁移要用平台自带的导入工具。

Q:只想备份所有分支最简单的做法?

定时任务跑 git clone --mirror(首次)+ git remote update(增量),即可在另一台机器维持完整镜像。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台