---
# System prepended metadata

title: 'Pipeline tutorial: transitioning from `master` to `main` branches'
tags: [tutorial, documentation]

---

# Pipeline tutorial: transitioning from `master` to `main` branches

> [!WARNING]
> Make sure you are on using same version of nf-core/tools as the template version of your branch

## Prequisites

- Admin rights on the GitHub repository where the change taking place
- nf-core tools
  - It is recommended that the version match the version of the template in your pipeline

## Instructions

1. Open your repository (make sure you're on master)
2. Go to the `branches` page (to the right of the `branches` drop down where it says 'master')
  ![image](https://hackmd.io/_uploads/rkc8GXJWgx.png)
3. Under the default branch section of the page, press the triple dot menu on the `master` branch row, and press 'Rename branch'
  ![image](https://hackmd.io/_uploads/Bkpdz7kWlg.png)
4.  Rename `master` to `main`
5. Press the 'learn more' text, and copy and paste the displayed instructions somewhere safe,
  ![image](https://hackmd.io/_uploads/SkiIQXyWlx.png)
6. Press 'Rename branch'
7. Go back to 'Code' tab to verify you are now on `main`
8. In your local IDE (e.g. VSCode) make sure you're on the `dev` branch
9. Run `git pull` or `git pull` to ensure you have the `main` branch locally
10. Check your `git` config to see what is your current default branch  (it should report `master`):
      ```bash
      git config --global init.defaultBranch
      ```
12. Change it to `main` with :
      ```bash
      git config --global init.defaultBranch main
      ```
14. Check your `git` config again to check it change (it should now report `main`):
      ```bash
      git config --global init.defaultBranch
      ```
15. Still on `dev`, run `nf-core pipelines sync`
16. Change to a new branch `git switch -c default-branch-change`
17. Follow the merge TEMPLATE instructions, i.e. `git merge TEMPLATE`
    - If you don't want any other template changes, make sure to use `nf-core/tools` version that matches the template version in your pipeline
18. Resolve merge conflicts (if just ROcrate, accept all incoming chagnes
19. Check that all references of your pipelines' `msater` is now `main` using a global repository search in your IDE
  > [!WARNING]
  > Make sure not to modify references of master in links to other repositories! 
  > If in doubt, ask on the nf-core slack!
20. Run `nf-core pipelines lint` to check you didn't break anything
21. Commit and merge `git add -am 'Change default branch'
22. Push the changes `git push`
23. On GitHub make a new PR against `dev`
24. Review PR to check all links and `nextflow.config` manifest say `main`
25. Review and merge

## Post-change instructions

1. Inform all your collaborators (on slack, etc.) that the default branch has changed, and that they should update their clones and forks, i.e.:
    ```bash
    git branch -m master main
    git fetch origin
    git branch -u origin/main main
    git remote set-head origin -a
  
    ```
2. Update your own clones and forks

