March 29, 2026
Git receipts vs Git rewrites!
More on Version Control
Rewriting history or keeping receipts? Devs feud over “safer Git” idea
TLDR: A new “safer” approach to tidying code history promises clean timelines without losing what really happened. Commenters split between wanting formal proof and hard answers about renames, and those who say rewriting their own history is a feature—not a bug—because it keeps projects tidy and workflows fast.
The author says they’ve found a way to make “squash” and “rebase” (the tools developers use to tidy up code history) actually safe — keeping the real backstory instead of flattening it into a neat fiction. Think: clean timeline for humans, full receipts for when things go wrong. Cue the comments section, which instantly turned into a courtroom drama about truth vs convenience.
One camp is cheering the “keep receipts” vibe, loving the promise of fewer footguns and a more honest history. Another camp says, basically, I like my fiction. As one rebasing fan snapped, rewriting your own history is the point. Meanwhile, the nerds showed up with clipboards: “Someone make a TLA+ model for this bad boy,” joked one user, demanding a formal proof this thing won’t explode. Others pressed for clarity on the mysterious “generation counting trick,” and how this compares to tools like Jujutsu (a Git alternative). Practical skeptics asked the tough one: what happens with file renames and copies? Does this scale beyond toy demos?
For extra spice, the author’s dig at Git — “it’s like editing with pen and paper” — had old-guard loyalists clutching pearls. Curious readers are diving into the previous HN thread while the crowd argues: preserve reality, or curate the narrative?
Key Points
- •The system supports safe rebase and safe squash by designating a primary ancestor path, preserving full history.
- •Outputs can be made to look similar to Git’s while avoiding history loss and reducing risks from prior squashes/rebases.
- •Adopting commit-time diffs enables safer operations but requires a conservatively updated, well-tested core.
- •A conflict model defined as near-simultaneous updates provides intuitive reasoning under eventual consistency.
- •Combining CRDT anchoring with generation counting removes commit ID references, yielding a structural algorithm.