如何克隆特定的Git分支?

How do I clone a specific Git branch?

本问题已经有最佳答案,请猛点这里访问。

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

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


1
git clone -b <branch> <remote_repo>

例子:

1
git clone -b my-branch [email protected]:user/myproject.git

对于git 1.7.10及更高版本,添加--single-branch,以防止提取所有分支。例如,使用OpenCv 2.4分支:

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


另请看其他许多人喜欢的答案。

你可能还想确保你理解其中的区别。区别在于:通过调用git clone --branch url,您将获取所有分支并签出一个。例如,这可能意味着您的存储库有一个5KB的文档或wiki分支和5GB的数据分支。每当你想编辑你的FrontPage时,你可能最终会克隆5GB的数据。

再说一次,这并不是说git clone --branch不是实现这一目标的方法,只是当你要求克隆一个特定的分支时,它并不总是你想要实现的。

我今天要写的答案是,考虑到今天的吉特

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

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

抄袭者非常不喜欢的答案是:

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


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

克隆存储库

1
git clone <repository_url>

列出所有分支

1
git branch -a

签出所需的分支

1
git checkout <name_of_branch>


要克隆分支而不提取其他分支,请执行以下操作:

1
2
3
4
5
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH


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

例如,在我的例子中:

1
2
3
4
5
6
7
 git branch -a
* master
  origin/HEAD
  origin/enum-account-number
  origin/master
  origin/rel_table_play
  origin/sugarfield_customer_number_show_c

因此,要基于我的枚举帐号分支创建一个新分支,我需要:

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

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

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

"


在本地系统上创建具有该名称的分支。例如,假设你想得到一个名为"branch-05142011"的分支机构。

江户十一〔四〕号

它会给您一条消息,比如"branch branch-05142011,设置为从源站跟踪远程branch-05142011"。

现在只要像下面这样签出分支,你就有了代码-埃多克斯1〔5〕


1
git --branch <branchname> <url>

但是bash的完成并没有得到这个键:--branch

享受。