How to fast-forward merge in Git

Fast-forward merging is a clean way to integrate changes when your target branch hasn’t diverged from the feature branch. As the creator of CoreUI, a widely used open-source UI library, and with over 25 years of experience in software development, I’ve managed countless branch integrations where maintaining a linear history is crucial for project clarity. The most effective approach is using git merge --ff-only to ensure you only merge when a fast-forward is possible, keeping your commit history clean and readable. This method prevents unnecessary merge commits when they don’t add value to the project history.

Use git merge --ff-only to perform a fast-forward merge only when the target branch can be moved forward linearly.

git checkout main
git merge --ff-only feature-branch

The --ff-only flag ensures that Git will only perform the merge if it can fast-forward the target branch. In a fast-forward merge, Git simply moves the branch pointer forward to include the new commits, creating a linear history without a merge commit. If the branches have diverged and a fast-forward isn’t possible, Git will abort the merge instead of creating a merge commit, allowing you to decide whether to rebase or use a different merge strategy.

Best Practice Note:

This is the approach we use in CoreUI development for integrating straightforward feature additions. When fast-forward isn’t possible, consider rebasing your feature branch first with git rebase main to enable a clean fast-forward merge and maintain project history clarity.


Speed up your responsive apps and websites with fully-featured, ready-to-use open-source admin panel templates—free to use and built for efficiency.


About the Author