Branching and Merging: Fast-Forwards, Three-Way Merges, and Real Conflicts
Two branches merge instantly nine times out of ten, then one day Git stops and asks you to resolve a conflict by hand. Understanding what a branch actually is — a movable pointer, not a copy of the project — explains both cases from the same underlying mechanism.