How macOS actually works
On a default Mac volume, README.md and readme.md cannot coexist — the file system treats them as the same name. Most people never notice. Developers notice the day a repository contains both.
APFS on a Mac ships case-insensitive, case-preserving: the disk remembers the capitalisation you used, displays it faithfully, and refuses to treat differently- cased names as different files. Check any volume:
diskutil info / | grep "File System Personality"
"APFS" means insensitive; "Case-sensitive APFS" says so explicitly.
Git repositories. A repo created on Linux can legally hold Icon.png and icon.png. Cloned onto a Mac, one silently overwrites the other, and git reports a permanently-modified file no checkout fixes. Renames that only change case (mv readme.md README.md) also confuse git on insensitive disks — the canonical workaround is renaming through an intermediate:
git mv readme.md tmp && git mv tmp README.md
Code that ships to Linux. An import of Utils.js resolves against a file named utils.js on the Mac and fails in production, where the filesystem is sensitive. The bug reproduces only after deploy — the worst kind.
Reformatting the whole Mac as case-sensitive breaks assumptions in shipping applications (Adobe's installers famously refuse) and buys trouble for no gain. The targeted version is right: a case-sensitive APFS volume just for code. Disk Utility → select the APFS container → + to add a volume → format "APFS (Case-sensitive)". It shares free space with the main volume and mounts under /Volumes permanently. Point the projects folder there; the production mismatch class of bug becomes unrepresentable locally.
On insensitive volumes searches match regardless of case; on a sensitive volume, tools differ — find is strict (-iname for insensitive matching), Spotlight stays forgiving either way. Worth remembering when a script's results differ between your disk and the code volume.
The boot volume, no — third-party software breaks. A dedicated case-sensitive volume for code gives the correctness without the casualties.
The repo likely contains two names differing only by case; your disk can only hold one, and git sees the other as perpetually changed.
Everywhere keeps track of every file on your Mac, including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Version 2.20.3 · macOS 13+ · 4.7 MB · notarised