---
title: '`glab mr create`'
stage: AI Coding
group: Code Review
info: To determine the technical writer assigned to the Stage/Group associated with this page, see <https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments>
---

<!--
This documentation is auto generated by a script.
Please do not edit this file directly. Run `make gen-docs` instead.
-->

Create a new merge request.

## Synopsis

Defaults to the current branch as the source branch. Use `--fill`
to automatically fill the title and description from the commit history. Use
`--draft` to create a draft merge request.

The `--recover` flag is an experiment: it might be unstable or
removed at any time, and is not ready for production use. For more
information, see
<https://docs.gitlab.com/policy/development_stages_support/>.

```plaintext
glab mr create [flags]
```

## Aliases

```plaintext
new
```

## Examples

```console
# Create a merge request interactively from the current branch
glab mr new

# Assign a user and set a title without prompting for description
glab mr create -a username -t "fix annoying bug"

# Fill title and description from commits, mark as draft, add a label
glab mr create -f --draft --label RFC

# Fill from commits and preview the compare page in the browser
glab mr create --fill --web

# Fill from commits, expand each commit body into the description
glab mr create --fill --fill-commit-body --yes

# Use a merge request template for the description
glab mr create -t "Fix login bug" --template bug_fix
glab mr create -t "Security patch" --template security_fix.md --yes

# Create against another project without a local clone. All inputs must be passed as flags; no --push, --fill, or --template.
glab mr create --repo group/project --source-branch feature-branch --target-branch main --title "Add feature" --description "Details..." --yes

# Create a fork merge request from your fork into the upstream project, without a local clone.
glab mr create --repo upstream/project --head your-namespace/project --source-branch feature-branch --target-branch main --title "Add feature" --description "Details..." --yes
```

## Options

```plaintext
      --allow-collaboration    Allow commits from other members. Set to true/false to override project defaults, or omit to use project settings.
  -a, --assignee usernames     Assign merge request to people by their usernames. Multiple usernames can be comma-separated or specified by repeating the flag.
      --auto-merge             Set the merge request to merge when all merge checks pass.
      --copy-issue-labels      Copy labels from issue to the merge request. Used with --related-issue.
      --create-source-branch   Create a source branch if it does not exist.
  -d, --description string     Supply a description for the merge request. Set to "-" to open an editor.
      --draft                  Mark merge request as a draft.
  -f, --fill push              Do not prompt for title or description, and just use commit info. Sets push to `true`, and pushes the branch.
      --fill-commit-body       Fill description with each commit body when multiple commits. Can only be used with --fill.
  -H, --head OWNER/REPO        Select another head repository using the OWNER/REPO or `GROUP/NAMESPACE/REPO` format, the project ID, or the full URL.
  -l, --label strings          Add label by name. Multiple labels can be comma-separated or specified by repeating the flag.
  -m, --milestone string       The global ID or title of a milestone to assign.
      --no-editor              Don't open editor to enter a description. If true, uses prompt. Defaults to false.
      --push                   Push committed changes after creating merge request. Make sure you have committed changes.
      --recover                Save the options to a file if the merge request creation fails. If the file exists, the options are loaded from the recovery file. (EXPERIMENTAL)
  -i, --related-issue string   Create a merge request for an issue. If --title is not provided, uses the issue title.
      --remove-source-branch   Remove source branch on merge. Set to true/false to override project defaults, or omit to use project settings.
      --reviewer usernames     Request review from users by their usernames. Multiple usernames can be comma-separated or specified by repeating the flag.
      --signoff                Append a DCO signoff to the merge request description.
  -s, --source-branch string   Create a merge request from this branch. Default is the current branch.
      --squash-before-merge    Squash commits into a single commit when merging. Set to true/false to override project defaults, or omit to use project settings.
  -b, --target-branch string   The target or base branch into which you want your code merged into.
      --template string        Name of a template in '.gitlab/merge_request_templates/' to pre-populate the description. The '.md' extension is optional. Templates are loaded from the local repository only.
  -t, --title string           Supply a title for the merge request.
  -w, --web                    Continue merge request creation in a browser.
      --wip                    Mark merge request as a draft. Alternative to --draft.
  -y, --yes                    Skip submission confirmation prompt. Use --fill to skip all optional prompts.
```

## Options inherited from parent commands

```plaintext
  -h, --help          Show help for this command.
  -R, --repo string   Select another repository. You can use either OWNER/REPO or GROUP/NAMESPACE/REPO. The full URL or Git URL is also accepted.
```
