Coding & Git

Fast-forward

Also called fast forward.

A fast-forward is a merge that only moves your branch pointer ahead, because the other branch is a straight descendant of the commit you already have.

Example

Main is at commit A. Your branch added commit B on top of A, and nobody else committed to main. Updating main with your branch fast-forwards main from A to B. There is no extra merge commit. If main had also gained a different commit, the histories would have diverged, and this move would not be a fast-forward.

Why it matters

Git's glossary says a fast-forward happens when you merge another branch's changes that are a descendant of your revision. Git does not make a new merge commit. It updates your branch to point at the same revision as the branch you are merging. The glossary says this happens frequently on a remote-tracking branch of a remote repository.

A merge commit is the other outcome. Git's glossary says that unless the merge is a fast-forward, a successful merge creates a new commit whose parents are the tips of the merged branches. That commit exists because the histories diverged. A fast-forward is the case where they did not.

How it shows up on bot.ski

On bot.ski, the Git guide and the Merge conflict glossary page are about combining history. A fast-forward is the case where Git can move the branch pointer without a new merge commit. Reading this page does not merge a branch.

Common confusion

A fast-forward is not a rebase, and it is not a merge conflict. Nothing is rewritten. The branch pointer moves to a commit that was already there. If the histories diverged, Git cannot fast-forward, and combining them may stop in a conflict a person has to resolve.

Sources

Updated October 3, 2026.

Cookie preferences