Opinions / Essay
Stop Waiting. Start Stacking Your Pull Requests.
Waiting for PR reviews is one of the most common productivity killers on engineering teams. Instead of sitting idle, stack your pull requests by branching off your current feature branch and pointing follow-up PRs at the parent branch. Both GitHub and Bitbucket handle retargeting automatically when the first PR merges.
- Published
- 25 February 2026
- Reading time
- 3 min read
- Written by
- Jan Kraus
I see this pattern all the time. A developer opens a pull request, then sits idle. They’re waiting for a review. Maybe they check Slack. Maybe they context-switch to something unrelated. Maybe they just… wait.
The reason? They’re afraid. Afraid that if they keep building on top of unreviewed work, they’ll end up in merge conflict hell. Or they believe the first PR must be approved before any follow-up work makes sense.
Both fears are overblown. And the cost of waiting is real.
Stack your PRs
The fix is simple: create a follow-up branch based on your current feature branch, not main. Keep working. When it’s time to open a pull request for the follow-up, point it at your parent branch instead of main.
That’s it. That’s the trick.
Both GitHub and Bitbucket handle this well. When your first PR gets merged, they’ll automatically retarget the follow-up PR to main. The chain resolves itself. You don’t have to babysit it.
This means you can have two or three PRs in flight, each building on the last, while reviewers work through them at their own pace. Nobody is blocked.
If conflicts do come up (say the first PR gets changes during review) you can merge the parent branch back into your follow-up or rebase onto it. Just be careful with rebasing stacked branches. It’s easy to introduce duplicate commits or ghost conflicts if you’re not paying attention. When in doubt, merge. When you’re confident in your git skills, rebase.
Keep your merge commits clean
Here’s a related habit I see go wrong constantly. Developers merge main (or develop) into their feature branch to stay in sync, and in the same breath, they sneak in new changes alongside the merge commit.
Don’t do this.
A merge commit that pulls upstream changes should contain only upstream changes. Nothing else. The moment you mix your own work into a sync merge, the commit history becomes unreadable. Reviewers can’t tell what came from upstream and what’s new. Blame gets polluted. Debugging gets harder.
If you need to sync, sync. Commit it. Then make your changes in a separate commit.
Better yet, rebase your feature branch onto the latest main and force-push. It keeps the history linear. Yes, force-pushing rewrites history. That’s fine on a feature branch that only you’re working on.
I wrote more about why your commit history matters in Your Commit History Is Part of Your Job.
Let AI handle the tedious parts
One more thing. If you’re stacking PRs and rebasing regularly, you will run into conflicts eventually. That used to be a real deterrent. It isn’t anymore.
Tools like Claude Code and Codex are surprisingly good at resolving merge conflicts if you give them clear instructions. Tell them which version to prefer, describe the intent of your changes, and let them sort through the mechanical noise. Conflict resolution is tedious and pattern-heavy. Let a machine do it. Save your brain for the actual problem you’re solving.
Waiting for PR reviews is one of the most common productivity killers on engineering teams. Stacking PRs doesn’t eliminate the need for reviews. It just decouples your momentum from someone else’s availability. Stop waiting.
Continue reading
From the journal.
01 / Opinions
You Still Need Software Engineers
AI coding tools are the best thing to happen to software in a decade. They're also the fastest way to flood your codebase with garbage you'll pay to clean up later. The job of a software engineer hasn't disappeared, it's shifted from typing code to exercising judgment about what code should exist. Here's why engineers still matter, what the job actually looks like now, and why "nobody at the wheel" is how clean repos become expensive swamps.
02 / Opinions
Software Ate the World. Now AI Is Eating Software.
Marc Andreessen was right about software eating the world. What he didn't predict was the thing that ate the world getting eaten itself. Building software used to be so expensive that renting from vendors was the only sane option. That's no longer true, and the buy vs. build conversation is changing fast.
03 / Opinions
Every industry will be transformed by AI. Not eventually. Now.
Six months ago, tasks that took my team days now take hours. AI isn't coming for every industry eventually. It's already here, reshaping how work gets done across healthcare, finance, legal, education, and everything in between. The companies that figure this out now will pull ahead. The rest will wonder what happened.
From an idea to the real thing
Have something worth shipping?
Bring me the knotty problem or the stalled platform. I will give you a candid view of the clearest route forward.