Well, that's explains the mystery then. A case-insensitive filesystem doesn't work when there are branches whose names only differ by case because git writes the ref into a file named .git/refs/branchname, so if .git/refs/branch and .git/refs/Branch refer to the same file it will not be able to keep track of both the branches "branch" and "Branch".