I cloned a Git repository, which contains about five branches. However, when I do git branch
I only see one of them:
$ git branch
* master
I know that I can do git branch -a
to see all the branches, but how would I pull all the branches locally so when I do git branch
, it shows the following?
$ git branch
* master
* staging
* etc...
Just those 3 commands will get all the branches
If you have problems with fetch --all
then track your remote branch
git checkout --track origin/%branchname%
After you clone the master repository, you just can execute
You can fetch one branch from all remotes like this:
fetch
updates local copies of remote branches so this is always safe for your local branches BUT:fetch
will not update local branches (which track remote branches); If you want to update your local branches you still need to pull every branch.fetch
will not create local branches (which track remote branches), you have to do this manually. If you want to list all remote branches:git branch -a
To update local branches which track remote branches:
However, this can be still insufficient. It will work only for your local branches which track remote branches. To track all remote branches execute this oneliner BEFORE
git pull --all
:TL;DR version
(it seems that pull fetches all branches from all remotes, but I always fetch first just to be sure)
Run the first command only if there are remote branches on the server that aren't tracked by your local branches.
P.S. AFAIK
git fetch --all
andgit remote update
are equivalent.Kamil Szot's comment, which 74 (at least) people found useful.
Here's something I'd consider robust:
HEAD
to trackorigin/HEAD
origin
It's not necessary to
git fetch --all
as passing-all
togit pull
passes this option to the internalfetch
.Credit to this answer.
Based on the answer by Learath2, here's what I did after doing
git clone [...]
andcd
-ing into the created directory:git branch -r | grep -v master | awk {print\$1} | sed 's/^origin\/\(.*\)$/\1 &/' | xargs -n2 git checkout -b
Worked for me but I can't know it'll work for you. Be careful.