If you use --depth option when cloning a repo like this:
git clone --depth=50 repo.git
You will see origin/master branch of git branch -a command. But git ls-remote --heads origin will only see all remote branches. Nor we can't checkout a remote branch.
To checkout a remote branch in addition of master, you can do this:
git remote set-branches origin 'foo'
git fetch -v
git checkout -b foo origin/foo