首页 > 解决方案 > `git clone` 是否复制远程存储库上的每个分支?

问题描述

是否git clone复制远程存储库上的每个分支?

是否可以请求它克隆一些分支而不是其他一些分支,就像git fetch通过它的 refspec 参数一样?

标签: git

解决方案


请记住,git clone与 Git 的所有其他部分一样,它并不真正关心分支名称,而是关心提交。只是 Git(和git clone)需要名称才能找到提交。

git clone命令本身主要包括:

  • 创建一个新目录(或使用现有但空的目录)
  • git init在该目录中运行
  • 根据需要和适当的方式在此处配置项目,包括git remote add保存 URL
  • git fetch使用刚刚添加的遥控器运行
  • 跑步git checkout

因此,问题真正归结为:您可以控制添加fetch =的遥控器的设置git clone吗?

答案是肯定的,但仅限于有限的范围。 限制是:

  • --mirror将 refspec 设置为+refs/*:refs/*.
  • --bare将 refspec 设置为+refs/heads/*:refs/heads/*+refs/tags/*:refs/tags/*
  • --single-branch或任何暗示它将 refspec 设置为适合该操作的命令。

如果没有其中任何一个,您将获得一个标准的 refspec。因此,--single-branch让您选择一个分支进行克隆(通过更改为单分支 refspec),并--mirror让您离开refs/heads/命名空间,但至少到目前为止,没有任何参数可以做一些中间子集。如果您希望获得一些特殊的结果,您可以改为执行您自己的mkdir/ git init/ git remote add/ git config/ git fetch/命令序列。git checkout


推荐阅读