如何克隆特定的Git分支?

时间:2009-12-15 23:06:50

标签: git git-branch git-clone

Git clone会将远程当前工作分支复制到本地。

有没有办法在不在远程存储库上切换分支的情况下自己克隆特定分支?

7 个答案:

答案 0 :(得分:7254)

git clone -b <branch> <remote_repo>

示例:

git clone -b my-branch git@github.com:user/myproject.git

使用Git 1.7.10及更高版本,添加--single-branch以防止获取所有分支。例如,使用OpenCV 2.4分支:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git

答案 1 :(得分:677)

请参阅许多人喜欢的other answer

与大多数愤怒的评论者和贬低者不同,您可能还想确保理解其中的差异。不同之处在于:通过调用git clone --branch <branchname> url,您将获取所有分支并签出一个分支。例如,这可能意味着您的存储库具有5kB文档或wiki分支以及5GB数据分支。每当您想要编辑首页时,最终可能会克隆5GB的数据。

同样,这并不是说git clone --branch不是实现这一目标的方式,只是当你要求克隆时,它不是总是你想要完成的事情。具体分支。

我今天要写的答案,考虑今天的git将是

git clone --single-branch --branch <branchname> host:/dir.git

在撰写下面的原始答案时,git没有--single-branch选项,但让我们保留它以使愤怒的蜜蜂完全满意。

这个非常不喜欢的应用程序的答案是这样的:

git init
git remote add -t refspec remotename host:/dir.git
git fetch

答案 2 :(得分:234)

要克隆分支而不获取其他分支:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH

答案 3 :(得分:232)

这是一个非常简单的方法:)

克隆存储库

git clone <repository_url>

列出所有分支

git branch -a 

签出您想要的分支

git checkout <name_of_branch>

答案 4 :(得分:83)

git checkout -b <branch-name> <origin/branch_name>

例如在我的情况下:

 git branch -a
* master
  origin/HEAD
  origin/enum-account-number
  origin/master
  origin/rel_table_play
  origin/sugarfield_customer_number_show_c

所以要根据我的enum-account-number分支创建一个新分支:

git checkout -b enum-account-number origin/enum-account-number

点击返回后,会发生以下情况:

Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number

答案 5 :(得分:24)

使用该名称在本地系统上创建分支。例如说你想得到名为“branch-05142011”

的分支

git branch branch-05142011 origin/branch-05142011

它会给你一条消息 - “分支机构-05142011设置为从原点跟踪远程分支分支-05142011。”

现在只需检查下面的分支,你就有了代码 -
git checkout branch-05142011

答案 6 :(得分:15)

git --branch <branchname> <url>

但是bash完成没有获得此密钥:--branch

享受。