A fast-forward is possible when the target branch has no independent commits beyond the source branch's ancestor. Git can move the target reference to the existing feature tip without creating a merge commit. The fast-forward-only option refuses a diverged history instead of guessing how to integrate it. Confirm that you are on main before merging. The tasks check both the delivered tree and the target branch, because a feature branch already contains its own changes. A two-commit feature over an unchanged main can advance main directly. If main also added an independent commit, the same option must refuse. That refusal is useful evidence about the graph rather than a broken file.