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

时间:2019-01-14 16:28:18

标签: git

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

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

1 个答案:

答案 0 :(得分:0)

请记住,git clone与其他所有Git一样,对分支名称​​ 的关注并不多,而是对 commits 的关注。只是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命令序列取得一些特殊的结果。