Commits are snapshots, not diffs
Git has a reputation for being confusing. Users stumble over terminology and phrasing that misguides their expectations. This is most apparent in commands that “rewrite history” such as
git cherry-pick
orgit rebase
. In my experience, the root cause of this confusion is an interpretation of commits as diffs that can be shuffled around. However, commits are snapshots, not diffs!
Source: Commits are snapshots, not diffs, an article by Derrick Stolee.