Cherry-pick changes (FREE)

GitLab implements Git's powerful feature to cherry-pick any commit with 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 displays to cherry-pick the changes introduced by that merge request.

Cherry-pick merge request

After you click that button, a modal displays 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 displays a system note to the related merge request thread. It crosslinks the new commit and the existing merge request.

Cherry-pick tracking in merge request timeline

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

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 cherry-pick the changes directly into the target branch or create a new merge request to cherry-pick the changes.

When cherry-picking merge commits, the mainline is always the first parent. If you want to use a different mainline, you need to do that from the command line.

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

git cherry-pick -m 2 7a39eb0

Cherry-pick into a project

  • Introduced in GitLab 13.11.
  • It's deployed behind a feature flag, disabled by default.
  • It's disabled on GitLab.com.
  • It's not recommended for production use.
  • To use it in GitLab self-managed instances, ask a GitLab administrator to enable it. (FREE SELF)

WARNING: This feature might not be available to you. Check the version history note above for details.

You can use the GitLab UI to cherry-pick merge requests into a project, even if the merge request is from a fork:

  1. In the merge request's secondary menu, click Commits to display the commit details page.
  2. Click on the Options dropdown and select Cherry-pick to show the cherry-pick modal.
  3. In Pick into project and Pick into branch, select the destination project and branch: Cherry-pick commit
  4. (Optional) Select Start a new merge request if you're ready to create a merge request.
  5. Click Cherry-pick.

Enable or disable cherry-picking into a project (FREE SELF)

Cherry-picking into a project is under development and not ready for production use. It is deployed behind a feature flag that is disabled by default. GitLab administrators with access to the GitLab Rails console can enable it.

To enable it:

Feature.enable(:pick_into_project)

To disable it:

Feature.disable(:pick_into_project)