Fast-forward merge requests

Sometimes, a workflow policy might mandate a clean commit history without merge commits. In such cases, the fast-forward merge is the perfect candidate.

With fast-forward merge requests, you can retain a linear Git history and a way to accept merge requests without creating merge commits.

Overview

When the fast-forward merge (--ff-only) setting is enabled, no merge commits are created and all merges are fast-forwarded, which means that merging is only allowed if the branch can be fast-forwarded.

When a fast-forward merge is not possible, the user is given the option to rebase.

Enabling fast-forward merges

  1. On the top bar, select Menu > Projects and find your project.
  2. On the left sidebar, select Settings > General.
  3. Expand Merge requests.
  4. In the Merge method section, select Fast-forward merge.
  5. Select Save changes.

Now, when you visit the merge request page, you can accept it only if a fast-forward merge is possible.

Fast forward merge request

If a fast-forward merge is not possible but a conflict free rebase is possible, a rebase button is offered.

Fast forward merge request

If the target branch is ahead of the source branch and a conflict free rebase is not possible, you need to rebase the source branch locally before you can do a fast-forward merge.

Fast forward merge rebase locally