When I list my branches with git branch -a, git shows me remote branches I can't actually find on my remote(gitlab). I tried to checkout and track those branches, and to my big surprise, git did it. But when I do for example git push origin :branch_name, git says that the remote ref does not exist, thus proving that I do not have those branches in my remote. Hence I have a question, are those branches stored in some kind a local cache? And if yes, how to clear it?
- 7,766
- 8
- 46
- 61
- 2,366
- 3
- 25
- 50
3 Answers
Like mentioned on cleaning up old remote git branches, you should use git remote prune origin.
I didn't use the other two commands mentioned there.
I had a weird issue on macOS where I would get phantom Uppercase versions of branches, e.g. my remote branch listing would show Ben/some-branch locally, but the server would show ben/some-branch.
git remote prune origin would (correctly) remove them, but git fetch --prune would (incorrectly) bring them right back. Very weird.
Best I can tell, at some point in the past, I had a Ben/something branch, but because the default macOS filesystem is case-insensitive, the .git metadata was hanging onto a (capitalized) .git/refs/remotes/origin/Ben folder and using it for the (lowercase) remote branch refs.
rm -rf .git/refs/remotes/origin/Ben && git fetch put me back in order.
- 12,831
- 6
- 66
- 78