On Sun, Jun 20 2021, Tim Hutt wrote: > If you try to switch to a branch (e.g. `master`), but get the case wrong, e.g: > > git switch MASTER > git checkout MASTER > git switch Master > git checkout Master > > etc. then it autocorrects the case (bad idea but ok), but it also > enables the `--detach` flag! In other words > > git switch Master > > acts like > > git switch -d master > > Very unexpected! This behavior isn't intentionaly, but ultimately isn't with Git, but with your running of Git on a filesystem that doesn't respect POSIX semantics. The default FS on OSX is case insensitive, we store the "master" reference (unpacked) under that name on the FS, so this is emergent behavior. Can you reproduce this after a: git pack-refs --all ? Even after that we'll have a .git/HEAD, and I know on OSX e.g. "git log head...<branch>" unintentionally resolved to "HEAD" too at some point (probably still). There's various workarounds in git's code to deal with funny behavior on OSX, but it's hard to catch them all as it means having to second-guess standard library calls. I think you're best off creating a case-sensitive partition on your computer and using git there if you want to avoid these cases entirely. > [System Info] > git version: > git version 2.32.0 > cpu: x86_64 > no commit associated with this build > sizeof-long: 8 > sizeof-size_t: 8 > shell-path: /bin/sh > uname: Darwin 20.4.0 Darwin Kernel Version 20.4.0: Fri Mar 5 01:14:14 > PST 2021; root:xnu-7195.101.1~3/RELEASE_X86_64 x86_64 > compiler info: clang: 12.0.5 (clang-1205.0.22.9) > libc info: no libc information available > $SHELL (typically, interactive shell): /bin/zsh > > [Enabled Hooks]