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.
Download for MacVersion 2.15.7 · macOS 13+ · 3.8 MB · notarised