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:

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:


Prefix a branch name with an issue number to streamline merge request creation. When you create a merge request for a branch with a name beginning with an issue number, GitLab:

  • Marks the issue as related. If your project is configured with a default closing pattern, merging this merge request also closes the related issue.
  • Copies label and milestone metadata from the issue.


To compare branches in a repository:

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

    compare branches

Delete merged branches

Delete merged branches

This feature allows merged branches to be deleted in bulk. Only branches that have been merged into the project’s default branch and are not protected are 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.

Introduced in GitLab 13.10.

This feature allows you to search and select a repository quickly when comparing branches.

Repository filter search box

Search results appear in the following order:

  • Repositories with names exactly matching the search terms.
  • Other repositories with names that include search terms, sorted alphabetically.

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 operators:

  • ^ matches beginning of branch name, for example ^feat would match feat/user-authentication
  • $ matches end of branch name, for example widget$ would match feat/search-box-widget
  • * wildcard matcher, for example branch*cache* would match fix/branch-search-cache-expiration

These operators can be mixed, for example ^chore/*migration$ would match chore/user-data-migration

Swap revisions

Introduced in GitLab 13.12.

Before swap revisions

The Swap revisions feature allows you to swap the Source and Target revisions. When the Swap revisions button is selected, the selected revisions for Source and Target is swapped.

After swap revisions