After cloning a remote repository it does not show any remote branch by -a option. What could be the problem? How to debug it? In this snippet two of the remote branches are not shown:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git --version
git version 1.8.3.1
Tried the same command on another machine, it works well:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
$ git --version
git version 1.7.1
Tried also cloning another repo, it works well. Though I can try it on this machine again, but it would be better to know what's wrong.
Any suggestions or hints will be more than welcome.
Edit: Answer summary: Since git version 1.8.3.2 the "--depth" and "--no-single-branch" need to be used together to get the same behavior as before. This is deemed a bug fix.
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/*