If your git history were a tree: cherry picking is ripping a leaf off and gluing it some arbitrary place on the tree, fast-forwarding is ripping the leaf off and moving it to the end of the branch it’s on, and rebasing is ripping a branch off and gluing it somewhere else.
EDIT: cherry picking is actually making a copy of the leaf and gluing it elsewhere. And fast forwarding isn’t really moving the leaf, it’s taking the leaf you call BRANCHNAME and now calling a leaf further up the branch BRANCHNAME.