Stacked pull requests are now in public preview 🚀 #201439
Replies: 480 comments 259 replies
|
gh extension install github/gh-stack |
|
My claude code workflow would love if the CLI allowed merging stacks as well. Further, when the stack requires a rebase, the "merge" button is still green and seems to attempt a merge that will inevitably fail, this is rather frustrating as it takes quite some time for the UI to reflect this |
|
Please show the PR approvals on the stack list and merge stack list! |
|
Idk if I did something wrong, but I did merge PR2 and then PR1 and only got PR1 merged to main. I had to merge main into PR2 and solve conflicts to be able to merge that one as well. In any case, I think it's not very intuitive what's going on; this was my structure:
|
|
Thanks for the 🥞! |
|
Can I unstack them so that I can merge things? Right now I have a PR to Branch A and cannot merge it because the PR from Branch A to Develop is blocking it, seems kind of dumb. |
|
A share button that copies the links to each PR in the stack so I can share with my colleagues when asking them to review |
|
It would be great if you made it so these new stack commands worked via github PATs - otherwise it will be a little dangerous with agents (you have to give them full access). |
|
this feature looks really promising, but I think it only becomes useful when a contributor who doesn't have access to the repo can stack PR submissions. unless I'm missing something, all branches must be in the same repo currently. They aren't when you submit a PR to another repo, and you might want to stack onto your first PR |
|
I have a use case for this that would be greatly improved with a pretty minor change. Occasionally, I need to make a change that should be deployed in multiple separate steps. For example, removing an S3 bucket from a Terraform deployment - first I need to merge a change to enable force-destroy and apply that (so it can be removed without emptying its contents first), then I need to merge a second change to actually remove it. Stacked PRs look like a great way to create both PRs ahead of time and mark them as related for reviewers, but I don't see any way for the stack creator to force the individual PRs to be merged separately. In the case I described above, someone merging both of them at once defeats the purpose and causes a failed apply. If I could disable merging multiple PRs at once for a specific stack, it would be much more useful and safer for this use case. |
|
I lowkey dislike the github stacks feature they added |
|
EDIT: Seems there is a phased rollout, as we now have support! This feature is not currently working for any repo in our organization that has a Merge Queue. Is there any guidance of how to enable this? I verified this to see 404 vs. 200 statuses for the stack feature against all of our repos. |
|
Would be nice to be able to mark a whole stack as "ready for review" at once |
|
All commits before the stack are suddenly unverified even though no changes were made to my local signing ability, any commits pushed up after stacking are verified as usual |
|
After the base of the stack is merged into |
|
Feature request: merge an upper layer into the layer below it, without unstacking Today a stack only merges bottom-up, into the trunk. We'd like to merge an upper PR into its parent's branch. That would fold the stack down one layer at a time, until one PR is left against the trunk. Our workflow
What happens today Upper layers can't be merged while they're in a stack. To fold the stack, we have to unstack it ( What we'd like
This would let stacks fit teams that use the bottom PR as an integration branch, not only teams that ship each layer to the trunk. |
|
If I have my main branch protected with "Require approval of the most recent reviewable push", I'm able to merge a full stack of PRs against main without needing re-review or re-running CI checks, which is great. However, If I merge part of the stack, any PR higher in the stack gets their reviews dismissed. That seems inconsistent and unnecessary, it's kind of a disincentive for merging PRs lower in the stack as they're ready. Is that intentional, or a bug? |
|
With a fair amount of LLM-generated code on my small team, human review is by far the bottleneck, and stacks are a great tool for streamlining those reviews! However, sometimes code generation gets even further ahead of human review, and there are multiple entire features that depend on each other in review - say, big-feature-A is a 6-PR stack, and big-feature-B, which depends on big-feature-A but requires different background context to review, is another 3 PRs that branch off the end of the big-feature-A stack. I'd like to be able to make a "separate" stack for big-feature-B, while still having the base branch for that stack be the end of the big-feature-A stack rather than By "separate" I mean:
Instead, when I dropped my big-feature-B PRs from the big-feature-A stack and then attempted to |
|
Using The web UI allows you to adopt the PR to the stack which fixes the issue but is otherwise annoying (I'd prefer to stay on the command line). Currently my workflow is like this because Claude knows how to create and write PRs well with |
|
Allow bypass actors to merge a stack I'm the only regular reviewer on a small team. Our default branch requires one code-owner approval, and my team is on the branch protection bypass list, so I can merge any single pull request without an approval by ticking "Merge without waiting for requirements to be met". Once the PRs are linked into a stack, that bypass option is gone, both in the web UI and in Workaround today: unstack, merge each PR with the bypass, then rebase the rest with Request: let actors who can bypass the merge requirements on the base branch merge a stack (or part of one) the same way they can merge a single PR, with the same bypass checkbox and an audit entry per PR. |
|
Is there a way to run |
|
It would be nice to be able to get a list of stacks as JSON in the same spirit |
This comment was marked as low quality.
This comment was marked as low quality.
|
Big pain point: rebasing a PR below (e.g fixing a conflict) dismisses all PR review approvals above, that's hella annonying |
|
Is there a place where we can find out what bugs have been fixed? Would love to turn back on "Automatically delete branches" once this issue is addressed. |
|
|
|
| PR | Before merge | After merge |
|---|---|---|
| bottom | APPROVED / CLEAN |
APPROVED |
| top | APPROVED / CLEAN |
REVIEW_REQUIRED / DIRTY |
The top PR's review is still APPROVED on the unchanged headRefOid. We first saw this on a real three-PR stack, where both upper layers ended up REVIEW_REQUIRED.
Expected: a PR that was approved when it merged keeps reviewDecision: APPROVED.
Possibly the same mechanism as https://github.com/orgs/community/discussions/201439#discussioncomment-17907389 and https://github.com/orgs/community/discussions/201439#discussioncomment-17911023, but here the merge succeeds and only the reported state afterwards is wrong.
|
Been loving this tool so far! Massively helpful for tracking discretely reviewable parts of a large change. I have some minor points of feedback that impact my work daily with this tool:
|
|
Really surprised there's no |





Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Stacked pull requests break large changes into small, reviewable pull requests. They're an ordered series of pull requests that each represent focused layers of your change. With stacks, you can independently review and check each pull request, then merge everything together in one click. No more opening a single large pull request that takes forever to review, or splitting work across multiple branches you have to keep manually rebasing.
072926-gitub-tmp-pr-v08.mp4
With stacked pull requests, teams can:
main.And because stacked pull requests are built into GitHub, your existing reviews, checks, and merge requirements all work out of the box.
Get started with the CLI extension
Install the CLI extension and create your first stack in under a minute:
Create stacks from your terminal or github.com
Create a stack from github.com, the GitHub CLI, the GitHub mobile app, or with a coding agent such as GitHub Copilot using the gh-stack skill. Start with a branch and pull request for your first change. Then add branches and pull requests on top of it; each pull request targets the layer below it.
Stacks-Changelog-InLine-01-CLI.mp4
Review each layer independently
Open any pull request in the stack to review only the diff for that specific layer. Use the stack map at the top of the pull request to see how the change you're reviewing fits into the larger work. You and your teammates can each review different layers in parallel without blocking further work.
Merge everything in a single click
Merge the latest ready pull request to land it and every unmerged layer below it in one single operation. To land part of a stack, merge one or more lower layers—the pull requests above it stay open and automatically rebase and retarget. Your existing branch protections and required checks still govern what reaches
main.Stacks-Changelog-InLine-03-MergeBox.mp4
Find out more and share your feedback
Stacked pull requests are rolling out in public preview to all repositories over the coming days. Merge queue support for stacked pull requests is rolling out progressively over the coming weeks.
For more information, check out the stacked pull requests documentation, and share your feedback with us in the comments below!
All reactions