title: Is there a difference between git rebase and git merge --ff-only
body: <p>From what I read, both of them help us get a linear history. </p>
  
  <p>From what I experimented, rebase works all the time. But merge --ff-only works only in scenarios where it can be fast forwarded.</p>
  
  <p>I also noticed, git merge creates a merge commit, but if we use --ff-only, it gives a linear history which essentially is equal to git rebasing. So --ff-only kills the purpose of git merge, right?</p>
  
  <p>So what is the actual difference between them? </p>