如何在Git中克隆单个分支?

1018

我有一个本地的Git仓库在~/local_repo目录下。它有几个分支:

$ git branch
* master
  rails
  c
  c++

为了克隆本地仓库,我执行以下操作:

$ git clone ~/local_repo new_repo
Initialized empty Git repository in /home/username/new_repo/.git/

new_repo的主分支指向local_repo的主分支,我可以推送/拉取。

但是我无法克隆另一个分支。我只想拉取我想要的分支(例如rails),这样新的存储库就有一个默认情况下将推送到和从local_reporails分支中拉取的master分支。如何实现这一目标?也许可以使用local_repo跟踪local_repo的主分支或类似的功能?


git branch -a 显示什么? - Jakub Narębski
5
“不带 --track 选项,使用 git checkout -b newbranch origin/branchiwant 命令是否更好?” - VonC
4
我认为你试图做的那件事是个坏主意。为不同的项目使用不同的代码仓库,分支是另一回事。请注意区分。 - innaM
1
@rodarmor,我认为你想做的事情是一个好主意,我也有同样的问题。 - Paul Du Bois
这更多是一个观点问题。谷歌将所有代码保存在单一代码库中。话虽如此,我同意@innaM的看法。尤其是在试图简化版本控制操作时,这种类型的工作流程很难管理。 - Jake Henningsgaard
显示剩余3条评论
27个回答

2
如果您想要一个浅克隆,可以使用以下命令进行操作:
git clone -b mybranch --depth=1 https://example.com/myproject.git localname

--depth=1 表示 --single-branch


2

这应该可以运行

git clone --single-branch <branchname> <remote-repo-url>
git clone --branch <branchname> <remote-repo-url>

2
你可以使用这个命令来获取单个分支,并重命名文件夹,如果你想保持分支独立。
git clone -b [branch-name] --single-branch [url]  [folder_name]

例子

git clone -b mybranch --single-branch git://github/repository.git  project_mybranch

1
Similar to what @nosaiba-darwish said here: here 这是我们公司通常做的事情:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally

1
对于像我这样的新手,只需运行以下代码。
git clone https://gitlab.com/repo/repo.git --branch <name of branch> --single-branch

0

-4

可以分为两个步骤完成

  1. 克隆存放库

    git clone <http url>
    
  2. 切换至目标分支

    git checkout $BranchName
    

实际上,git clone <http url> 部分会将所有分支克隆到您的本地计算机,而不仅仅是您想要克隆的一个分支。这是因为它将所有分支提取到本地远程跟踪 remote_name/branch_name 分支中,这些分支是这些分支的真正本地克隆。使用 --single-branch 选项确实可以将其他分支从您的系统中删除,git branch -a 将只显示您想要的一个分支,以证明这一点。 - Gabriel Staples
我没有给你点踩,但这就是你被点踩的原因:人们认为你的回答实际上克隆了整个仓库而不仅仅是一个分支,这表明你并不真正知道这里发生了什么,所以他们给你点了踩。 - Gabriel Staples

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接