Cherry-pick changes

GitLab implements Git's powerful feature to cherry-pick any commit with introducing a Cherry-pick button in merge requests and commit details.

Cherry-picking a merge request

After the merge request has been merged, a Cherry-pick button will be available to cherry-pick the changes introduced by that merge request.

Cherry-pick Merge Request

After you click that button, a modal will appear showing a branch filter search box where you can choose to either:

  • Cherry-pick the changes directly into the selected branch.
  • Create a new merge request with the cherry-picked changes.

Cherry-pick tracking

Introduced in GitLab 12.9.

When you cherry-pick a merge commit, GitLab will output a system note to the related merge request thread crosslinking the new commit and the existing merge request.

Cherry-pick tracking in Merge Request timeline

Each deployment's list of associated merge requests will include cherry-picked merge commits.

NOTE: Note: We only track cherry-pick executed from GitLab (both UI and API). Support for tracking cherry-picked commits through the command line is planned for a future release.

Cherry-picking a commit

You can cherry-pick a commit from the commit details page:

Cherry-pick commit

Similar to cherry-picking a merge request, you can opt to cherry-pick the changes directly into the target branch or create a new merge request to cherry-pick the changes.

Please note that when cherry-picking merge commits, the mainline will always be the first parent. If you want to use a different mainline then you need to do that from the command line.

Here is a quick example to cherry-pick a merge commit using the second parent as the mainline:

git cherry-pick -m 2 7a39eb0