A branch is a version of a project's working tree. You create a branch for each set of related changes you make. This keeps each set of changes separate from each other, allowing changes to be made in parallel, without affecting each other.

After pushing your changes to a new branch, you can:

With GitLab Starter, you can also request approval from your managers.

For more information on managing branches using the GitLab UI, see:

You can also manage branches using the command line.

Watch the video GitLab Flow.

See also:

Default branch

When you create a new project, GitLab sets master as the default branch for your project. You can choose another branch to be your project's default under your project's Settings > Repository.

The default branch is the branch affected by the issue closing pattern, which means that an issue will be closed when a merge request is merged to the default branch.

The default branch is also protected against accidental deletion. Read through the documentation on protected branches to learn more.


To compare branches in a repository:

  1. Navigate to your project's repository.
  2. Select Repository > Compare in the sidebar.
  3. Select branches to compare using the branch filter search box
  4. Click Compare to view the changes inline:

compare branches

Delete merged branches

Introduced in GitLab 8.14.

Delete merged branches

This feature allows merged branches to be deleted in bulk. Only branches that have been merged and are not protected will be deleted as part of this operation.

It's particularly useful to clean up old branches that were not deleted automatically when a merge request was merged.

Branch filter search box

Introduced in GitLab 11.5.

Branch filter search box

This feature allows you to search and select branches quickly. Search results appear in the following order:

  • Branches with names that matched search terms exactly.
  • Other branches with names that include search terms, sorted alphabetically.

Sometimes when you have hundreds of branches you may want a more flexible matching pattern. In such cases you can use the following:

  • ^feature will only match branch names that begin with 'feature'.
  • feature$ will only match branch names that end with 'feature'.