Since the time git cherry-pick learned to be able to apply multiple commits, the distinction indeed became somewhat moot, but this is something to be called convergent evolution ;-) The true distinction lies in original intent to create both tools: git rebase's task is to forward-port a series of changes a developer has in their private repository, created against version X of some upstream branch
