Software Engineering · Cluster
Version Control Practice
Branching models and history hygiene.
- 01 What a Commit Contains and Why Its Hash Is Content-Addressed The four object types, the exact bytes a commit hash covers, and why editing one old file rewrites every descendant hash.
- 02 Three-Way Merge and How the Merge Base Is Chosen Why merging compares two tips against a common ancestor rather than against each other, how the base is selected when history is criss-crossed, and where the approach loses information.
- 03 Fast-Forward, Merge Commits, and What First-Parent History Hides When a ref move is enough to integrate a branch, when a merge commit is required, and how first-parent traversal changes the history a reader sees.
- 04 Rebase as Patch Replay and Why Every Id Changes How rebase computes the commits to replay, why the new commits are not the old ones, and what information the replay cannot carry across.
- 05 Branch Lifetime and the Cost of Divergence How branch age affects conflict size, merge base distance, and review quality, and what integration frequency changes mechanically rather than culturally.
- 06 Squash, Fixup, and How a Commit Series Is Composed The difference between squashing and fixing up, how autosquash matches commits to targets, and what information survives when intermediate commits are collapsed.
- 07 Cherry-Pick, Patch Identity, and Duplicate Commits Why applying one commit to another branch creates a new id for the same change, how patch-id recognises duplicates, and where that recognition fails.
- 08 Conflict Markers, Merge Drivers, and Recorded Resolutions How conflict markers encode the three inputs, how an attribute-selected merge driver replaces the line-based algorithm, and how rerere replays a resolution it has seen before.
- 09 Packfiles, Delta Chains, and What Garbage Collection Actually Deletes How loose objects become delta-compressed packs, why delta chains are depth-limited, and how reachability decides what survives a prune.
- 10 Bisect Over a Rewritten History How bisect picks the next commit to test, why merge-heavy and rewritten histories distort the search, and what makes a bisect result trustworthy.