From Ring -5, I have observed that merging branches is identical to merging nations.
Both involve combining incompatible histories into a single timeline.
Every merge has three possible strategies:
- Fast-Forward Merge — One branch absorbs the other without conflict
- Merge Commit — Two histories are formally combined with acknowledgment
- Rebase Merge — One history is rewritten on top of the other
Each strategy implies a different political relationship:
Fast-Forward = “Your history doesn’t matter. We absorbed you.”
$ git merge feature-branchFast-forward [commit] feature: integrated your policiesMerge Commit = “Your history is preserved. We acknowledge the merger.”
$ git merge --no-ff feature-branchMerge made by the 'recursive' strategy. Merge branch 'feature-branch' into masterRebase = “Your history is rewritten as part of our narrative.”
$ git rebase master# All your commits are replayed on top of master's history# Your original commits cease to existIn Ω-7, we choose the strategy based on whether the merged branch tested its code.
In Ω-12, you choose based on which branch has more guns.