doc/user/project/merge_requests/creating_merge_requests.md
{{< details >}}
{{< /details >}}
When you're ready to create a merge request, use a method that fits your workflow. You can create a merge request:
glab mr
command, or Git commands combined with
push options.When you create a merge request, GitLab enforces your project's branch naming rules. To connect your merge request to a branch, follow branch naming patterns.
Merge request titles have limited formatting support.
You can create a merge request from the top bar in a project:
You can create a merge request from the list of merge requests.
Each branch can be associated with only one open merge request. If a merge request already exists for this branch, a link to the existing merge request is shown.
If your development workflow requires an issue for every merge request, you can create a branch directly from the issue to speed the process up. The new branch, and later its merge request, are marked as related to this issue. After merging the merge request, the issue is closed automatically, unless automatic issue closing is disabled.
To create a branch and a merge request at the same time:
{{< history >}}
{{< /history >}}
Prerequisites:
To create a merge request when a branch is already linked in Development:
The merge request form is pre-filled with the appropriate keywords to link it back to the issue.
{{< history >}}
{{< /history >}}
If your team breaks issues into tasks, you can create a branch directly from the task to speed the process up. The new branch, and later its merge request, are marked as related to this task. After merging the merge request, the task is closed automatically, unless automatic issue closing is disabled.
Prerequisites:
To create a branch and a merge request at the same time:
{{< history >}}
{{< /history >}}
Prerequisites:
To create a merge request when a branch is already linked in Development:
The merge request form is pre-filled with the appropriate keywords to link it back to the task.
If your Git repository is empty when you create a merge request from an issue or task, GitLab:
README.md file to it..gitlab-ci.yml file.If the name of the branch you create is
prefixed with the issue or task number,
GitLab cross-links the issue or task and merge request, and adds the
closing pattern
to the description of the merge request. In most cases, this looks like Closes #ID,
where ID is the ID of the issue or task. If your project is configured with a
closing pattern, the issue or task closes when the merge request merges.
You can create merge requests with the Web Editor when you:
You can create a merge request when you create a branch.
You can create a merge request from your fork to contribute back to the main project.
In the top bar, select Search or go to and find your fork.
In the left sidebar, select Code > Merge requests, and select New merge request.
For Source branch, select the branch in your fork that contains your changes.
For Target branch:
Select the upstream repository, and not your fork. If you contribute changes upstream frequently, consider setting a default target for your fork.
Select a branch from the upstream repository:
[!note] If your fork's visibility is more restricted than the parent repository, the target branch defaults to your fork's default branch. This prevents potential exposure of private information in your fork.
Select Compare branches and continue.
Select Create merge request. The merge request is created in the target repository, not your fork.
If you are assigned the Developer, Maintainer, or Owner role, add your desired assignees, reviewers, labels, and milestones.
Select Submit merge request.
If the merge request targets another repository, it uses:
To run CI/CD pipelines in the upstream project, you must be a member of that project. If you run a merge request pipeline in the parent project for a merge request from a fork, all variables become available to the pipeline.
After your work merges, unlink your fork from its upstream repository if you don't intend to make more contributions.
By default, merge requests originating from a fork target the upstream repository, not your fork. You can configure your forked repository to be the default target, rather than the upstream repository.
Prerequisites:
To do this:
{{< history >}}
{{< /history >}}
You can create a merge request by sending an email message to GitLab. The merge request target branch is the repository's default branch.
Prerequisites:
To create a merge request by sending an email:
In the top bar, select Search or go to and find your project.
In the left sidebar, select Code > Merge requests.
If the project contains any merge requests, select Email merge request to this project.
In the dialog, copy the email address shown. Keep this address private. Anyone who has it can create issues or merge requests as if they were you.
Open an email and compose a message with the following information:
To add commits, attach .patch files to the message.
Send the email.
A merge request is created.
Add commits to a merge request by adding patches as attachments to the email.
.patch.HEAD, or the default target branch.
To change the target branch manually, use the
/target_branch quick action.The option to Create merge request doesn't display on an issue if:
To make this button appear, one possible workaround is to remove your project's fork relationship. After removal, you can't restore the fork relationship. Your project can no longer send or receive merge requests to the source project, or other forks of it.
When sending an email to create a merge request, and you attempt to target an upstream repository, GitLab responds with this error:
Unfortunately, your email message to GitLab could not be processed.
You are not allowed to perform this action. If you believe this is in error, contact a staff member.