Start here. This is the direct spoken answer to practice first.
Why this question matters
Merge vs rebase is not only a command-line topic. It affects team history, release traceability, and how safely developers work with shared branches.
A merge combines two histories. If the target has not diverged it may fast-forward; otherwise the team may create a merge commit, depending on repository policy. A rebase takes my commits and reapplies them on a new base, which creates new commit identities. I may rebase my own feature branch to make it easier to review, but I avoid rebasing shared branches because rewriting history disrupts everyone using it.