Make master Branch Default Again
David Paluy

David Paluy @dpaluy

About: "Of course, I'm an optimist - I don't see much point in being anything else."

Location:
Austin, TX
Joined:
Mar 15, 2019

Make master Branch Default Again

Publish Date: Nov 7 '24
5 15

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"

  1. Widely Recognized: The term is universally understood in version control systems
  2. Tool Compatibility: Many CI/CD tools and scripts expect "master" as the default
  3. Clear Meaning: Instantly communicates which branch is authoritative
  4. Historical Continuity: Maintains compatibility with existing documentation and workflows

Github Update

Personal Settings

  1. Visit: https://github.com/settings/repositories
  2. Set the default repository branch to: master

Repository Default Branch in Github

Organization Account

  1. Go to Organization settings of your repository: https://github.com/organizations/[ORGANIZATION]/settings/repository-defaults
  2. Set the default repository branch to: master

Comments 15 total

  • waelsafa
    waelsafaNov 7, 2024

    it's just a branch name, get over it.

  • potyoma
    potyomaNov 7, 2024

    your "remember" block convinces that using "main" is way more convenient. it just describes itself while you need a whole article to explain what's under this "master" naming 🤷‍♂️

  • Jan Peterka
    Jan PeterkaNov 8, 2024

    I would argue that other names actually communicate the meaning better:

    • production - as a branch/code that lives in production
    • main - as branch that all other branches merge into

    I personally took master as a given, but I don't think that it easily, clearly conveys the meaning.

    So, even when we forget all the other reasons why master may not be great name (as it currently has more meaning and associations), I believe that using production or main makes things more understandable.

    Of course, any change has its costs. Personally, I had little trouble when our projects changed to main - we changed defaults in few places, and that's it.

    • 𒎏Wii 🏳️‍⚧️
      𒎏Wii 🏳️‍⚧️Nov 8, 2024

      I personally like main when it's both the primary development branch and also generally production-ready.

      When those are split, I find it better to avoid confusion by not having a main branch and instead splitting it into development and production.

    • Elliotb
      ElliotbMar 25, 2025

      best to keep deploy environment concepts out of branching strategies! always use env variables and deploy tools.

  • 𒎏Wii 🏳️‍⚧️
    𒎏Wii 🏳️‍⚧️Nov 8, 2024

    Image description

    I sure love having my culture americansplained to me. Here's an idea: how about you stop bringing up other people's languages as an excuse to get upset about your own country's history?

    The sooner people like you stop trying to make this an issue when it isn't, the quicker main can simply become the one and only name for the primary git branch, and the quicker we stop having to deal with competing standards.

    So please, stop making software development worse for everyone, most of us have actual problems to solve and actual things to build, so this pointless bike shedding over political nonsense is an actual nuisance to us.


    Ranfom fact: most of Europe doesn't speak English. Most of us don't even have the word "master". Germany sure doesn't. Our bakers get a Meisterbrief, not a "master's certificate". In Spain we call teachers "maestro", not "master".

    • Jan Peterka
      Jan PeterkaNov 8, 2024

      I would love maestro be default! so poetic.

    • Mark Vasile
      Mark VasileNov 11, 2024

      This ^^

      And also, the master-slave architecture and related concepts are targeted for change, not just a github branch. The word "slave" should not appear anywhere in our tech.

      Side-note: beware, the AI overlords can really do some damage by being trained on this kind of stuff.

  • Dan Maroff
    Dan MaroffNov 8, 2024

    Correct me if I’m wrong but what I think really bothers you is that political correctness was responsible for the name change from master to main.

    The decision to change the default branch of a git repository from master to main for that reason was just plain idiotic in my opinion and made zero sense. In other fields such as auto repair, you won’t see the master cylinder being renamed to main cylinder to make mechanics “feel better” about themselves. I’ve been in the software business since the late 90s and I’ve never seen this kind of cultural weirdness in the industry until recently. Now, with all that being said, master or main it really doesn’t matter at this point. Main works for fine me.

    • Jan Peterka
      Jan PeterkaNov 8, 2024

      The decision to change the default branch of a git repository from master to main

      Some people made some desicions about their products/tools - Github changed default (but you can always choose any other), same with git, and that's all. You can rename your branch as you like.

      Edit: I'm sorry, rereading this I realize that you are pointing only at the change in git project, I previously read it in more general view. I edited my post accordingly.

      • Dan Maroff
        Dan MaroffNov 8, 2024

        Read carefully what I posted above. I never mentioned anyone was“forced”. When you create a new repository git now creates the primary branch as main instead of master. Why? Straight from the horses mouth …

        “Both Conservancy and the Git project are aware that the initial branch name, ‘master’, is offensive to some people and we empathize with those hurt by the use of that term.”

        • Jan Peterka
          Jan PeterkaNov 8, 2024

          I'm sorry if my reaction sounded as if you said forced, I was just poining to the fact that all that happened is that open source project decided to change their default, and they every right to do so, no matter what is their reasoning.

          At the same time, I do think that if you can change something to empathize with others without harming others, it's pretty reasonable thing to do.

          • Dan Maroff
            Dan MaroffNov 8, 2024

            No worries, these kinds of discussions are healthy. I do agree that changing something without harming others is very reasonable. But from a practical standpoint, which is what we were supposed to be as developers, practical … this change made zero concrete difference to anyone’s lives in reality. It’s just a pat on the back move without any real sacrifice from GitHub. Put it this way, I can’t imagine under privileged people thanking GitHub for improving their lives. Silly stuff in my opinion. But that’s just my opinion

  • Elliotb
    ElliotbMar 25, 2025

    Thanks for the great history here. Its unfortunate those in charge at gitlab/github etc in 2020 didn't think about this more.
    The most cringe part about this - the concept of 'main' for me now contains everything, in meaning, of what i believe were the original images intended to be scrubbed. On top of controversy. All the while as pointed out here, were probably not even there in the first place.

    The road to hell is paved in good intentions.

Add comment