Remember: Good version control is about maintaining a clear, authoritative source of truth for your code. The name should serve this purpose first and foremost.
I didn't follow the trend of changing my default branch from master
to main
. It doesn't make any sense to spend my resources reconfiguring my settings.
Also, DHH agreed that it was a classic exploit of good faith.
Historical Context: The Master Craftsman Tradition
The term "master" has a rich history in European guild systems and skilled trades dating back centuries. A master craftsman (or "Meister" in German-speaking regions) was someone who had achieved the highest level of skill and expertise in their trade. This usage derives from the Latin "magister," meaning "teacher" or "chief."
- Apprentices would study under a master to learn their craft
- Becoming a master required years of study and the creation of a "masterpiece"
- Masters were teachers and guardians of quality standards
- The title "Master" indicated expertise and teaching authority, not ownership
Git's Usage of "Master"
When Git was developed, the term "master" was chosen for the default branch to indicate it as the authoritative version of the code - the version from which all other branches derive their work. This usage aligns with:
- Master recordings in audio production (the final, authoritative mix)
- Master copies in publishing (the definitive version)
- Master's degrees in academia (advanced level of subject expertise)
Technical Benefits of "Master"
- Widely Recognized: The term is universally understood in version control systems
- Tool Compatibility: Many CI/CD tools and scripts expect "master" as the default
- Clear Meaning: Instantly communicates which branch is authoritative
- Historical Continuity: Maintains compatibility with existing documentation and workflows
Github Update
Personal Settings
- Visit: https://github.com/settings/repositories
- Set the default repository branch to:
master
Organization Account
- Go to Organization settings of your repository:
https://github.com/organizations/[ORGANIZATION]/settings/repository-defaults
- Set the default repository branch to:
master