Github和Gitlab为什么要把默认分支由master改成main?
这个改动主要不是技术原因,而是社会文化层面的去歧视化运动驱动的。核心原因如下:
1. "Master" 一词的种族联想
Git 中 master 最初的语义其实来自"母带/原始拷贝"(master recording),与奴隶制无直接词源关系。但在技术行业广泛使用的 master/slave(主/从) 配对术语中,"master" 被认为带有种族压迫色彩——master 让人联想到奴隶主,slave 则直接对应奴隶。
2020 年 5 月弗洛伊德事件后,BLM 运动在科技圈引发强烈共鸣,各大公司开始审视产品和代码中带有种族隐喻的术语。
2. GitHub 率先推动
- 2020 年 6 月,GitHub CEO Nat Friedman 公开宣布将把默认分支从
master改为main,并承认 "master" 一词虽词源上与奴隶制无关,但社群中有此感受,选择尊重。 - 同时提供了一键重命名默认分支的工具和文档迁移支持。
- 2020 年 10 月 1 日起,GitHub 新建仓库的默认分支正式改为
main。
3. GitLab 跟进
- GitLab 同样在 2020 年宣布将
main设为新仓库的默认分支。 - GitLab 14.0(2021 年 5 月) 起,新项目默认使用
main,并提供了逐步迁移已有项目的方案。
4. 为什么选 "main"
| 考量 | 说明 |
|---|---|
| 语义中性 | "main" 就是"主干开发分支"的字面意思,无任何历史包袱 |
| 简短好记 | 与 master 长度相近,迁移成本低 |
| 行业共识 | 避免各家各起名字(如 trunk、develop),统一用 main 便于跨工具协作 |
5. 连锁效应
这不是孤立事件,而是整个科技行业去 master/slave 术语的一部分:
- 编程语言/框架:Django、Rails、Python 官方文档等陆续改用
main - 基础设施:Linux 内核文档、Redis 等也逐步替换 master/slave 表述
- 云厂商:AWS、Google Cloud、Azure 的文档中也将主从架构改为 primary/replica 等中性词
一句话总结:master → main 不是因为技术上有问题,而是 2020 年种族平等思潮下,科技行业主动移除可能造成冒犯的术语,GitHub 带头、GitLab 跟进,形成了行业标准。