With default merge settings, when does `git merge` perform a fast-forward instead of creating a merge commit?
When the current tip is an ancestor of the merged branch, so Git only moves the pointer forward✓Correct answer
When both branches have new commits but none of the files they changed overlap with each other
Whenever the merge completes without conflicts
Only when the `--squash` option is given
Explanation
A fast-forward happens only when there is no divergence: the merged branch already contains everything on the current branch, so Git can simply move the pointer forward without creating any new commit. The tempting distractor is 'whenever there are no conflicts' — when both branches have new commits, Git performs a three-way merge and creates a merge commit even if it is entirely conflict-free. With --no-ff or merge.ff=false, Git creates a merge commit even in this situation.