Best Practices for renaming `master` to `main` in pipelines
This guide shows you how to change your pipeline default branch from master
to main
.
Prerequisites
- Admin privileges for the GitHub repository where the change is taking place
- nf-core tools
Ensure that your version of nf-core/tools
matches the pipeline’s template version by checking the .nf-core.yml
file. This prevents introducing unrelated changes and keeps the update limited to switching the default branch from master
to main
.
Instructions
- Open your repository on GitHub. Make sure you’re viewing the
master
branch. - Select Branches. It’s located to the right of the branch dropdown that shows
master
.

- In the Default branch section, find the
master
branch and select the More options (three-dot) menu, then select Rename branch.
You will need permissions to change this setting. If you don’t have permission, ask the @core-team for help on Slack.

- Rename
master
tomain
. - Select the learn more, then copy the displayed instructions and save them somewhere safe.
These instructions will be useful for all pipeline contributors, so keep this to one side until the end of this tutorial!

- Select Rename branch.
- Select the Code tab and verify you are now on
main
. - In your local IDE (e.g., VS Code), ensure you are on the
dev
branch. - Run
git fetch upstream
to ensure you have themain
branch locally. - Run
git config --global init.defaultBranch main
to change yourgit
config tomain
. - Run
git config --global init.defaultBranch
to check yourgit
config again, it should now reportmain
. - While still on
dev
, runnf-core pipelines sync
. - Run
git switch -c default-branch-change
to switch to a new branch. - Run
git merge TEMPLATE
.
If you don’t want any other template changes, make sure to use the nf-core/tools
version that matches the template version in your pipeline.
- Resolve merge conflicts.
If it’s the ROcrate JSON file, you can accept all incoming change.
- Run a global repository search in your IDE to check that references of your pipelines
master
are nowmain
.
Make sure not to modify references of master in links to other repositories! If in doubt, ask on the nf-core Slack!
- Run
nf-core pipelines lint
to check you didn’t break anything. - Run
git add -am 'Change default branch'
to commit and merge. - Run
git push
to push changes. - On GitHub, make a new PR against
dev
. - Review the PR to check all relevant links and the
nextflow.config
manifest saymain
. - Request a community review on #request-review on Slack, and once you have an approval…
- … merge! 🎉
Post-change instructions
-
Inform all your collaborators (on Slack, etc.) that the default branch has changed, and that they should update their clones and forks, i.e.:
git branch -m master main git fetch origin git branch -u origin/main main git remote set-head origin -a
-
Update your own clones and forks using the above commands.