A branch is an independent line of development in a project.
When you create a new branch (in your terminal or with
the web interface),
you are creating a snapshot of a certain branch, usually the main
at its current state. From there, you can start to make your own changes without
affecting the main codebase. The history of your changes is tracked in your branch.
When your changes are ready, you then merge them into the rest of the codebase with a merge request.