Git repository lost its remote branches?

git, version-control

Solution

[Edit, April 2017] If you made your original clone with `--single-branch`, your `remote.origin.fetch` setting will be the problem. If you used a `--depth` limit, that too implies `--single-branch`. Restore the normal `remote.origin.fetch` value described below and you will get a fuller clone.

Normally, just running `git fetch` should restore your remote-tracking branches.

If `git fetch` is not restoring them, then I wonder: what goes `git config --get-all remote.origin.fetch` print? (This assumes the remote is named `origin`; if not, substitute the actual name.) It should be set to `+refs/heads/*:refs/remotes/origin/*` (again assuming the name `origin`). Special cases (such as fetching notes) might add more lines.

Problem

I have a git repository that has a remote set up ("git fetch" works), but it doesn't have any remote branches: the ".git/refs/remotes" folder doesn't exist, and ``` git branch -r ``` returns nothing (empty list, no branches). Yet the actual remote repository does have a branch. If I re-clone the remote repo, I get another local repo that does have remote branches. I didn't think this state was possible. My questions: - How on earth did I get into this state? - Is there a command that can be run to put ".git/refs/remotes" back? (short of a fresh clone, which I've done already). Additional Information "git config --get remote.origin.fetch" is blank (i.e. the command produces no output) "git remote show origin" shows ``` $ git remote show origin * remote origin Fetch URL: <correct remote url here> Push URL: <correct remote url here> HEAD branch: master Local ref configured for 'git push': master pushes to master (up to date) ```

Original source