DEV Community

loading...
Cover image for Renaming your master branch to main in GithubπŸ‘©β€πŸ’»

Renaming your master branch to main in GithubπŸ‘©β€πŸ’»

tracycss profile image Jane Tracy πŸ‘©πŸ½β€πŸ’» ・Updated on ・5 min read

How I learned about the main branch

When I started to code in March this year, I have always used the master branch as my default branch. From all the tutorials I learned from Youtube or Tech blogs, they all used the master branch. I never had any clue that you can change it until recently(Talking about being a newbie, no judgment here 😁). Last week, when I was contributing to an Open Source project in Github, one of the issues was changing the master branch to main and also the existing open pull requests. At first, I didn't understand but I decided to do my research.

internet gif

PS: That's why I started to love open source contribution, I get to learn a lot from more experienced engineers.

After a while, I found different ways to rename your master branch, from using Git or just changing a few things in your GitHub account.
Something to note my newbies, the owner of the GitHub repository is the only person who can change the default branch. You can't do it from a pull request for open source contribution.

Step 1 - Changing your upcoming repositories to the main branch as a default.

  • Click your profile icon on the top right

Profile icon in Github

  • Click on the settings

Settings image in Github

  • Go to the Repositories tab.

Here we are going to change the default branch of all your new personal repositories that you will be creating. You can also change the default branch in each repos individually (I will show you how to do it in step 2).
Just create a new default branch and click the update button. For me, I went with the main branch.
With this step, any new repository you will create in Github, it will have the main branch as the default branch.

Repository tab image

A quick step

When creating a new repository you will see some text from Github, just above the create a repository button, which directs you to change your default branch directly. (This will set main as the default branch. Change the default name in your settings.)
Github account image

Step 2 - Updating your existing repository and the open pull requests to the main branch.

In this step, you can use git or just change it from Github directly.

Using Github directly
  • Click on the master branch and create a new branch called main. The main branch will be equal or have the same code as your master branch. (Don't panic your code files will still be the same.)

Creating the main branch

  • Click on the setting tab of your repository
    setting tab image

  • Select the branches tab in the left menu
    When you select the master option you will a drop-down of the branches you created. Since we want to change the default branch to main, you will select the main branch. Then you will click on the update button on your right.
    Github branches tab

You will see a warning alert that if you change your default branch your open pull requests will be affected. Just click the I understand button and you have finally updated your default branch.

  • Delete the master branch Let's just say, I didn't know how to delete a branch from GitHub, I only used Git. (It's called beginner struggles don't laugh too hard. πŸ€¦β€β™€οΈ) We learn as we engage in different projects don't put yourself down.

Click the branches tab
Branches tab in the repo

Go and select the delete icon on the master branch
Delecting the master branch

How to update your existing pull requests

This time we are using Git to change our branch to set the existing pull request to the main branch. This action was created by Edward Thomson who works at Github. He has amazing projects go check them out and one of them is a node package - retarget prs that helps to update your open pull request to the main branch.

Steps to take

After you have created and set the main branch as the default, do the following:

Install Node Js software if you don't have it
Create a personal token

It is used for authentication and can be used instead of a password in Git over HTTPS.

  • Go to your profile pic and click settings.
    On the left side menu, select the Developer settings tab.
    Developer settings

  • Click on the personal access token tab.
    Select the Generate new token button to create a token.

Personal access token tab

  • Check on the boxes on that define the access of your personal token. You can also name the token. For this example, I named it awesome notes. (It's good to confuse people, who love snupping in your things/account.) After you are done selecting the checkboxes, click on the green Generate token button which will be at the bottom and our token will be generated. It will contain numbers and letters plus it's long, copy it somewhere safe. (You won't remember it off-head unless you are a genius or something. 😜)

Personal token generation

Please note: You should not share your token with anyone. Keep it somewhere you know it's safe.

  • Go to your Git terminal and write the following
npx retarget_prs --token your_pat https://github.com/your/repo master main

Replace your_path with your GitHub token and paste in your repo URL.

Congratulations!!

You have moved your open pull requests to the new default main branch.

Congratulations gif

Update from Github

Github is an amazing organization, the changes will begin next month.

On October 1, 2020, any new repositories you create will use main as the default branch, instead of master. This change does not impact any of your existing repositories: existing repositories will continue to have the same default branch they have now. You can opt-out of this change at any time.

For more details about the changes you can follow Github repository

Github message on the Main branch

In Conclusion

You can now go and change your default branch easily with the above simple steps. Always remember you learn as you get more exposure to different projects, don't be so surprised when you hear or see something you don't know or never heard about.

If you find this post useful share it with your peers or beginners who want to start open-source contribution. You can also buy me a Cappuccino. πŸ™‚

Buy Me A Coffee

Discussion (22)

pic
Editor guide
Collapse
thinkverse profile image
Kim Hallberg

Git v2.28 introduced the init.defaultBranch config so now you can also set it locally as well. πŸ‘Β πŸ™‚

$ git config --global init.defaultBranch main
Enter fullscreen mode Exit fullscreen mode

Github wrote a blog post about that you can read - "Introducing init.defaultBranch". πŸ˜€

Collapse
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’» Author

Thank you, Kim, for adding that.
I didn't know about it. πŸ”₯

Collapse
tcelestino profile image
Tiago Celestino

It's nice!!!

Collapse
goodevilgenius profile image
Dan Jones

I will continue to maintain that main is not a useful name. Neither is master, and has other problematic implications. So, I'm certainly not advocating using master.

The thing is, we name all of our other branches according to their purpose, so why not the default branch? In my opinion, the default branch should also be named according to how it's used.

For projects where the default branch represents the stable code, it should be named something like stable, or prod. I usually use prod for continuously deployed web apps, and stable for versioned projects.

For projects where the default branch represents the main development branch, it should be named develop or development.

Collapse
alec profile image
Collapse
goodevilgenius profile image
Dan Jones

I do. In all my projects. πŸ˜ƒ

Collapse
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’» Author

Thanks for your input, Dan. βœ”
Yes, it's true.
Different teams or organization name their branches differently. πŸ’―πŸŒŸ
Develop branch is common especially for features underdevelopment etc.

Collapse
alec profile image
Alexey Poimtsev (lord/emperor)

Thanks a lot fot your article! Now I changed main back to master! There's several reasons:
1 - Github changed default settings without asking my permissions for that
2 - in Russian (my native) language word "master" means "expert in his area", but "main" means "basic"
3 - i completely disagry with this new SJW-trends. Being a developer you better focus on good code, useful projects and doing good stuff, but not which name is better for your github branch - master or main.

Collapse
nathanhannon profile image
Nathan Hannon • Edited

Someone created a cool web app/tool to automatically rename the default remote branches in all your repositories: eyqs.ca/tools/rename

Collapse
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’» Author

That's amazing. Thanks for sharing Nathan. πŸ™Œ

Collapse
tracycss profile image
Jane Tracy πŸ‘©πŸ½β€πŸ’» Author

Hey, you can use the link I provided in the post to take a look. πŸ’―

Some comments have been hidden by the post's author - find out more