Stacked PRs: fixing abstractions with more layers of abstraction

2026-09-19 #design #git

In Git, a commit is the minimal unit of changes that can be applied to a repository. We can send multiple commits (e.g. multiple patches) to someone else, and they can selectively apply some of them without applying all of them. Or they can provide feedback for individual patches.

Pull requests change this model: each PR contains multiple commits, and the workflow focuses on applying all or none of them. The UI makes it awkward to exchange feedback for a single commit, and provides no convenient mechanism to apply a single one.

Stacked pull requests are an attempt to solve the problem introduced by PRs: they allow submitting a series of changes, where the receiver can review and apply the first set of changes without the follow-up changes. But the minimal unit is still a PR, not a commit.

Stacked PRs solve a problem introduced by one abstraction by adding another layer of abstraction on top of it. This is a clear example of how you should not solve problems in software design.

Have comments or want to discuss this topic?
Send an email to my public inbox: ~whynothugo/public-inbox@lists.sr.ht.
Reply privately by email: hugo@whynothugo.nl.

— § —