I'm trying to clone an entire repository onto my machine using linux. I used
git clone <url>
I then went into the folder where it was downloaded and typed
git branch
in the terminal. It's only showing me master and not other branches which were in the remote repository. How do I clone all branches?
I know that for each branch in the remote I can separately use
git checkout -b <name of local branch> origin/<name of remote branch>
but is there any way other than that?
Branches are essentially pointers to commits. When you do a
git clone
(or agit fetch
), you retrieve all of the commits from the remote repository, and all of its branches as well.However,
git branch
does not show remote branches by default. Instead, it shows you your local branches, which may or may not have any relation to branches that exist on the remote. If you rungit branch --all
, git will report all of the branches it knows about, both local and remote.It's worth noting that tags do not operate this way, and there is no distinction between a local and remote tag.
Then after the repo is clone with all its branches then do the following
This isn't too much complicated, very simple and straight forward steps are as follows:
After cloning the repo, run
$ cd myproject
git branch -a
This will show you all the remote branches.If you want to work on remote branch, you'll need to create a local tracking branch:
Verify whether you are in the desired branch by the following command;
The output will like this;
Notice the * sign that denotes the current branch.
I find this to be the simple solution to clone a git repository and all remote branches:
To download a full repository, including all branches, use the following command:
git clone --mirror <URI>
This will create a folder called
repository.git
unless you give it a different name.Now, this gets you a full clone of the original repository, but because it's in
bare=true
mode, you don't have a work tree. Effectively, what you have is the.git
folder, including all branches and content. This is a fancy way of saying that you won't have direct access to the files because they're stashed away within the git system (compressed, etc).To make this a "normal" git repo, we need to make this clone the
.git
folder within a new folder, which will be our usual repo folder:mkdir <repo folder name> mv repository.git <repo folder name>/.git cd <repo folder name> git checkout master
Note that there is no single native git command to download all remote branches, so the simplest way is to make sure you have all commits pushed to the origin, and then re-download the whole repository anew using this --mirror option.
git clone --bare https://repo.git projectName
cd projectName
git push --mirror https://repo.git https://help.github.com/en/articles/duplicating-a-repository
that makes your repo completely identical.