Why Git is hard | Roadrunner Twice
Commit content is both a snapshot and a patch
Commits are unique and immutable, and are anchored to a specific point in the graph of history and causality. This means that a commit’s identity is made up of both its content and its context. (If a commit has the same content but a different parent, it’s NOT the same commit.)
Branches aren't quite branches, they're more like little bookmark go-karts
And branches don't mutually exclude each other, they don't "own" the branch of history that they happen to be placed on.
git pull exists
"Pull" presents the illusion that you can just ask Git to make everything okay for you so that you're allowed to push again, without having to understand what you're causing to happen, which, as I mentioned at the top, is literally the opposite of how Git operates. It's an incredibly harmful illusion! Can everyone please start teaching novices the basic "fetch, observe, then consciously choose whether to fast-forward / do a merge commit / rebase / reset" workflow instead, thanks.