How do I clone a specific Git branch?

ID : 125

viewed : 120

Tags : gitgit-branchgit-clonegit

Top 5 Answer for How do I clone a specific Git branch?

vote vote

91

git clone -b <branch> <remote_repo> 

Example:

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

With Git 1.7.10 and later, add --single-branch to prevent fetching of all branches. Example, with OpenCV 2.4 branch:

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

84

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

The --single-branch option is valid from version 1.7.10 and later.

Please see also the other answer which many people prefer.

You may also want to make sure you understand the difference. And the difference is: by invoking git clone --branch <branchname> url you're fetching all the branches and checking out one. That may, for instance, mean that your repository has a 5kB documentation or wiki branch and 5GB data branch. And whenever you want to edit your frontpage, you may end up cloning 5GB of data.

Again, that is not to say git clone --branch is not the way to accomplish that, it's just that it's not always what you want to accomplish, when you're asking about cloning a specific branch.

vote vote

70

Here is a really simple way to do it :)

Clone the repository

git clone <repository_url> 

List all branches

git branch -a  

Checkout the branch that you want

git checkout <name_of_branch> 
vote vote

62

To clone a branch without fetching other branches:

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

59

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

for example in my case:

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

So to create a new branch based on my enum-account-number branch I do:

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

After you hit return the following happens:

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

Top 3 video Explaining How do I clone a specific Git branch?

Related QUESTION?