git shallow clone (clone --depth) misses remote branches
After doing a shallow clone, to be able to checkout other branches from remote,
Run (thanks @jthill):
git remote set-branches origin '*'
After that, do a
git fetch -v
Finally
git checkout the-branch-i-ve-been-looking-for
Step 1 can also be done manually by editing .git/config
.
For instance, change the folloing line from:
fetch = +refs/heads/master:refs/remotes/origin/master
to (replace master
with *
):
fetch = +refs/heads/*:refs/remotes/origin/*
From reading the responses and the comment from @jthill, the thing that worked best for me was to use the set-branches
option on the git remote
command:
$ git clone --depth 1 https://github.com/dogescript/dogescript.git
$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name
This changes the list of branches tracked by the named remote so that we can fetch and checkout just the required branch.