-
Diagnose before resolving: is this conflict additive or substantive? Read both sides of the conflict. If each side inserts brand-new, logically independent content near the same anchor point (not editing the same existing line), this is a false-positive conflict — git's line-based diff can't recognize that adjacent insertions are independent, even though the correct resolution is obvious to a human.
-
Resolve by keeping both sides — never drop one to "win." Remove the conflict markers (<<<<<<<, =======, >>>>>>>) and retain both hunks. For registry-style code (e.g., both branches add setup calls at the same two anchor points), preserve each hunk's original internal order.
-
For append-only logs (e.g., docs/progress.md, docs/learnings/_intake.md), keep both appended blocks, separated by a blank line, and order them by recency — newest entry first (reverse-chronological) — matching the file's established convention. This exact pattern repeats constantly in append-only logs; once recognized, resolve it in seconds rather than treating it as a complex merge.
-
For stash-pop conflicts on a holding-pen/intake document, recognize that both the stashed version and the current HEAD version represent distinct, valid entries. Keep both, drop only your own session's stash reference once merged, and leave the file in the state a curator would expect (i.e., don't leave your session's scratch artifacts behind).
-
Verify the union is correct after resolving. Run the test suite (for code registries) or visually confirm both entries are present and well-formed (for logs/docs) before committing the resolution.
-
Document the merge logic in the commit message — state explicitly that this was an additive/false-positive conflict and both sides were kept, so future readers (and git blame/bisect) understand the resolution wasn't arbitrary.