Merge requests per project

View all the merge requests within a project by navigating to Project > Merge Requests.

When you access your project's merge requests, GitLab will present them in a list,
and you can use the tabs available to quickly filter by open and closed. You can also search and filter the results.

Merge requests per group

View all the merge requests in a group (that is, all the merge requests across all projects in that
group) by navigating to Group > Merge Requests. This view also has the open, merged, and closed
merge request tabs, from which you can search and filter the results.

Cherry-pick changes

Semi-linear history merge requests

A merge commit is created for every merge, but the branch is only merged if
a fast-forward merge is possible. This ensures that if the merge request build
succeeded, the target branch build will also succeed after merging.

Navigate to a project's settings, select the Merge commit with semi-linear
history option under Merge Requests: Merge method and save your changes.

Fast-forward merge requests

If you prefer a linear Git history and a way to accept merge requests without
creating merge commits, you can configure this on a per-project basis.

Merge when pipeline succeeds

When reviewing a merge request that looks ready to merge but still has one or
more CI jobs running, you can set it to be merged automatically when CI
pipeline succeeds. This way, you don't have to wait for the pipeline to finish
and remember to merge the request manually.

Resolve conflicts

Create new merge requests by email

You can create a new merge request by sending an email to a user-specific email
address. The address can be obtained on the merge requests page by clicking on
a Email a new merge request to this project button. The subject will be
used as the source branch name for the new merge request and the target branch
will be the default branch for the project. The message body (if not empty)
will be used as the merge request description. You need
"Reply by email" enabled to use
this feature. If it's not enabled to your instance, you may ask your GitLab
administrator to do so.

Revert changes

GitLab implements Git's powerful feature to revert any commit with introducing
a Revert button in merge requests and commit details.

Merge requests versions

Every time you push to a branch that is tied to a merge request, a new version
of merge request diff is created. When you visit a merge request that contains
more than one pushes, you can select and compare the versions of those merge
request diffs.

Merge request diff file navigation

The diff view has a persistent dropdown for file navigation. As you scroll through
diffs with a large number of files and/or many changes in those files, you can
easily jump to any changed file through the dropdown navigation.

Ignore whitespace changes in Merge Request diff view

If you click the Hide whitespace changes button, you can see the diff
without whitespace changes (if there are any). This is also working when on a
specific commit page.

Tip:
You can append ?w=1 while on the diffs page of a merge request to ignore any
whitespace changes.

Live preview with Review Apps

If you configured Review Apps for your project,
you can preview the changes submitted to a feature-branch through a merge request
in a per-branch basis. No need to checkout the branch, install and preview locally;
all your changes will be available to preview by anyone with the Review Apps link.