Git 3.0 will use main as the default branch
Scope of the change (Git 3.0)
- Default branch for new repos will be
main; existing repos are unaffected. - Users can still globally override the default name (e.g. via
init.defaultBranch). - Several commenters argue the real 3.0 news is hash-format changes (SHA‑256, storage, Rust), not branch naming.
Arguments in favor of main
- Seen as nearly zero-cost: a one-time config change or minor script updates.
- Considered clearer and more accurate: Git has no true “master” in a distributed sense; “main”, “primary” or “default” better match the role.
- “Master” in Git inherits from BitKeeper’s explicit master/slave model, which many view as bad historical baggage.
- Broader concern about “master/slave”, “blacklist/whitelist” language in tech; proponents say small wording fixes are easy, kind, and symbolically important.
- Some emphasize “negative liberty”: it’s better to avoid defaults that can evoke slavery for some users, especially when the alternative is equally functional.
- Several note that internal tooling cleanups prompted by the change were actually beneficial (removing hardcoded branch names).
Arguments against / skepticism
- Many see the rename as performative DEI or “virtue signaling” pushed by a vocal minority, often white, without clear evidence that affected groups requested it or care.
- Concerns about real but diffuse costs: broken tutorials and scripts, confusion for beginners, bugs during the transition (Git vs GitHub defaults diverging).
- Some argue offense requires intent; “master” has long non-slavery meanings (master copy, mastering audio, master’s degree, master key), and context should suffice.
- Worry about a “euphemism treadmill” and “heckler’s veto”: once you concede here, any term can be targeted; jokes extend this to
manpages,kill()functions, containers, jails, etc. - A few frame it as “newspeak” or ideological language-policing and claim backlash over such issues fuels broader political polarization.
Alternative naming preferences
- Some prefer domain-specific or workflow-based defaults:
develop,release,default,trunk,stable, or even whimsical names (sensei, etc.). - Others say they don’t care about the word itself, only cross-project consistency; the GitHub/Git mismatch was the most annoying part.
Meta-observations
- Several comments note that arguing about this likely consumed far more time than the actual rename work.
- There is visible fatigue with both the “woke” vs “anti-woke” framing and with HN’s increasing resistance to change in general.