View as Markdown

Copy

Copy a pull request to another branch.


The copy action enables you to automatically create a copy of a pull request. When the conditions you specify are met, Mergify will create a new pull request to merge the changes into the specified base branch.

Note that in case of a conflict during the copy, Mergify will create a pull request with the conflict; you will have to resolve it manually. You can change this behaviour using the ignore_conflicts option.

The copy action takes a list of branches to which the changes from the pull request will be copied. The branch names should be specified as strings.

assignees#list of template

Users to assign the newly created pull request to. As the type is a data type template, you could use, e.g., {{author}} to assign the pull request to its original author.

body#template·default
|
  {{ body }}<hr>This is an automatic copy of pull request #{{number}} done by [Mergify](https://mergify.com).

The pull request's body.

bot_account#template or null·defaultnull

Mergify can impersonate a GitHub user to copy a pull request. If no bot_account is set, Mergify copies the pull request itself.

branches#list of Branch Name

The list of branches the pull request should be copied to.

ignore_conflicts#boolean·defaulttrue

Whether to create the pull requests even if there are conflicts when cherry-picking the commits.

label_conflicts#string·defaultconflicts

The label to add to the created pull request if it has conflicts and ignore_conflicts is set to true.

labels#list of string

The list of labels to add to the created pull requests.

merge_conflict_style#merge or diff3·defaultmerge

Style used by git when displaying merge conflicts

regexes#list of

The list of regexes to find branches the pull request should be copied to.

report_mode#list of check or comment·default- check

Reporting modes for the action's result. Check will create a check on the pull request, and comment will post a comment on the pull request.

title#template·default"{{ title }} (copy #{{ number }})"

The pull request's title.

As the title and body are templates, you can leverage any pull request attributes to use as content, e.g., {{author}}.

Note that the commits attribute here will be the list of cherry picked commits.

On top of that, you can also use the following additional variables:

  • {{ destination_branch }}: the name of the destination branch.

  • {{ cherry_pick_error }}: the cherry pick error message if any (only available in body).

Mergify cannot copy a pull request that contains a merge commit, such as when you merge a teammate’s branch into yours. Merges of the base branch into your pull request (for example, Merge branch 'main') are an exception and don’t block the copy.

To avoid this, rebase your pull request or squash its commits so its history stays linear.

Below is an example of how to use the copy action:

pull_request_rules:
- name: copy patches to the prod branch
conditions:
- label = copy-to-prod
actions:
copy:
branches:
- prod

Was this page helpful?