<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8" -->

---
title: GitHub Stacks in Jujutsu | daily.dev
description: GitHub's stacked pull request feature entered public preview on July 30, 2026, with documented support for Jujutsu (jj) alongside git. This is a hands-on...
canonical: https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub Stacks in Jujutsu | daily.dev
og:description: GitHub's stacked pull request feature entered public preview on July 30, 2026, with documented support for Jujutsu (jj) alongside git. This is a hands-on...
og:url: https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8
og:image: https://api.daily.dev/og/posts/5jmk4wow8.png
og:image:alt: GitHub Stacks in Jujutsu
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub Stacks in Jujutsu

**[Lobsters](https://daily.dev/sources/lobsters)** · 7 min read · 1 upvotes · 0 comments

## Summary

GitHub's stacked pull request feature entered public preview on July 30, 2026, with documented support for Jujutsu (jj) alongside git. This is a hands-on primer covering prerequisites (git, jj, gh CLI, github/gh-stack extension), and manual workflows for creating stacks, adding commits to the top/middle/bottom of a stack, removing commits, updating existing stacks, and merging. The workflow relies heavily on jj bookmarks (git branches) since every PR in a stack needs one, and several operations (adding to the middle, removing a commit) require deleting and recreating the whole stack via the web UI. The author praises the feature as genuinely useful but criticizes it as an unambitious implementation that bolts stacking onto GitHub's existing branch-based PR model rather than adopting more advanced approaches like automatic change IDs, interdiffs, or a one-command submit flow seen in tools like Graphite or git-branchless.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://alan.norbauer.com/articles/github-stacks-with-jujutsu>

## Questions this post answers

### How do I use GitHub's stacked pull request feature with Jujutsu (jj) instead of git?

Install the git, jj, and gh CLIs plus the github/gh-stack extension, then create a jj bookmark for each commit in your stack and use gh stack link to upload them and create linked draft PRs on GitHub. Only a few gh stack subcommands like link and push are needed in a jj repo, since most others manage local tracking irrelevant to jj. Tested against jj v0.43.0, git v2.52.0, gh v2.96.0, and github/gh-stack v0.1.0.

_Anyone wiring up jj-based stacked PR workflows can find setup notes like these curated on daily.dev._

### Can you add a commit to the middle of an existing GitHub stacked pull request stack?

No, GitHub's stacked PR feature only allows adding new PRs to the top of an existing stack; attempting to add to the middle returns the error 'Cannot update stack: new PRs must be added to the top of the existing stack.' To insert or remove a commit anywhere but the top, you must delete the stack via the GitHub web UI, create a new bookmark, re-push all upstack commits, and re-run gh stack link to recreate it.

_Developers debugging stack limitations can track workflow quirks like this via daily.dev._

### How does GitHub's stacked pull requests feature compare to Graphite or git-branchless for stacking workflows?

GitHub's stacked PRs require manually creating a separate branch for every change in a stack and manually feeding gh stack the list of branches, with no automatic change IDs or a single submit command. Graphite and git-branchless both offer an automatic submit command that figures out branch and stack management on its own, making GitHub's implementation comparatively unambitious and more manual to operate.

_Teams weighing stacking tools can compare GitHub, Graphite, and git-branchless workflows on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 16 comments across lobsters (as of 2026-09-13).

**TL;DR:** Practitioners find the jj+GitHub Stacks workflow genuinely useful and appreciate the concrete tips, but there's real debate over whether the custom revset aliases are even necessary, and multiple people flag rough edges (title/body generation, reordering risk) in the tooling.

**Sentiment:** 20% positive · 45% mixed · 35% skeptical

**The case for**

- The reviewer-side experience of reviewing a stack is considered good, which some say is the most important part.
- Several people shared workarounds and improvements (jj git push --change, git_push_bookmark templates, jj-gh tool) that streamline bookmark/PR creation.
- One person found the article itself extremely useful for figuring out the workflow after weeks of using GitHub Stacks with jj.

**The pushback**

- One commenter argues jj's built-in primitives already support stacks well enough that the custom revset aliases are unnecessary/counter-productive.
- Reordering a stack was found to be poorly supported, and one person reported it accidentally caused GitHub to merge a branch into main.
- PR titles/bodies generated by gh stack link are described as low quality (e.g., just the bookmark name or boilerplate body) requiring manual fixing.
- The overall developer experience of managing a stack is called lackluster even by people otherwise positive on the approach.

**By community**

- lobsters (mixed): Discussion mixes genuine appreciation for the workflow tips with pointed pushback on whether the custom tooling is even needed, plus a scary bug report about stack reordering.

**Hottest debate:** Whether jj's built-in revset/bookmark primitives already make the article's custom aliases unnecessary, versus the author's claim they solve a real gap.

**Open questions**

- Does reordering a stack actually cause lost reviews or PR closures, or does gh stack link safely relink existing PRs?
- Why did reordering bookmarks in a stack cause GitHub to merge one branch into main, and how can that be avoided?

**Highlights**

> UHHH don't do this. I just tested it and took: ``` branch-3 branch-2 branch-1 ``` Re-ordered to: ``` branch-2 branch-3 branch-1 ``` And when I ran `jj git push -c "stack()"` GitHub MERGED `branch-2` into MAIN. That is wild and insanely dangerous and I have absolutely no idea how that could happen.
> — [altano on lobsters · 1 points](https://lobste.rs/s/keiw21/github_stacks_jujutsu#c_kk1hk3)

> Honest question -- why do all this? The fundamental building blocks of `jj` directly, easily support stacks without any customization. You can move to any point in a stack of commits, add more work at any point, label each point in the stack with a bookmark, all with built-in commands. I too went through a phase of "revset alias everything", but `jj` has such powerful primitives that I find this kind of customization to be counter-productive.
> — [restrictedchoice on lobsters · 1 points, 1 comments](https://lobste.rs/s/keiw21/github_stacks_jujutsu#c_piys9q)

> I’ll say it again: gh stack link takes a space delimited list of branches, in bottom-up order. The `sb` alias from the article, and the supporting revset aliases, get you that. If you can get that with `jj log` without manually copying and pasting each bookmark out of the output, please let us know how.
> — [altano on lobsters · 1 points, 2 comments](https://lobste.rs/s/keiw21/github_stacks_jujutsu#c_ufdci2)

> > this is an unambitious implementation of stacked PRs. GitHub’s stacked PRs build entirely on the existing, flawed model of GitHub PRs without changing any of the foundations The feature people've been waiting years for comes out and is entirely lacklustre.
> — [alper on lobsters · 1 points, 1 comments](https://lobste.rs/s/keiw21/github_stacks_jujutsu#c_lgz07v)

> I've been using GitHub Stacks with jj for the last few weeks and this article would have been very helpful when I was first figuring things out! One thing I do differently than the workflow here is use [jj-gh](https://github.com/mrjones2014/jj-gh) to create the PRs, rather than letting `gh stack link` do the job. That tool gives you more control over what the PR title and description look like. I found that PRs created using `gh stack link` would often end up with a title that was just my bookmark name, and I'd have to go manually copy-paste my commit messages into the PR. I still run `gh stack link` to tell GitHub about the stack, but it detects that there are existing PRs and links those PRs together rather than creating new ones.
> — [koreth on lobsters · 1 points](https://lobste.rs/s/keiw21/github_stacks_jujutsu#c_ztl7ui)

**Source threads**

- [lobsters](https://lobste.rs/s/keiw21/github_stacks_jujutsu) · 42 points · 16 comments

## Similar posts on daily.dev

- [Announcing jj-stack: stacked GitHub pull requests for Jujutsu](https://daily.dev/posts/announcing-jj-stack-stacked-github-pull-requests-for-jujutsu-t4l5wfu9c) · Planet Haskell · 0 upvotes · 0 comments
- [GitHub adds Stacked PRs to speed complex code reviews](https://daily.dev/posts/github-adds-stacked-prs-to-speed-complex-code-reviews-ufanab95z) · InfoWorld · 0 upvotes · 0 comments
- [GitHub Stacked PRs](https://daily.dev/posts/github-stacked-prs-ekt9rnyqu) · Hacker News · 2 upvotes · 0 comments

---

Tags: [#github](https://daily.dev/tags/github), [#git](https://daily.dev/tags/git), [#version-control](https://daily.dev/tags/version-control)

[View this post on daily.dev](https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub Stacks in Jujutsu","url":"https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8"},"datePublished":"2026-08-13T11:55:41.085Z","dateModified":"2026-09-13T21:34:04.433Z","description":"GitHub's stacked pull request feature entered public preview on July 30, 2026, with documented support for Jujutsu (jj) alongside git. This is a hands-on...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0c1109159ca1a84828f074013a54e75a?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0c1109159ca1a84828f074013a54e75a?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"github,git,version-control","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"GitHub Stacks in Jujutsu"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/github-stacks-in-jujutsu-5jmk4wow8#faq","mainEntity":[{"@type":"Question","name":"How do I use GitHub's stacked pull request feature with Jujutsu (jj) instead of git?","acceptedAnswer":{"@type":"Answer","text":"Install the git, jj, and gh CLIs plus the github/gh-stack extension, then create a jj bookmark for each commit in your stack and use gh stack link to upload them and create linked draft PRs on GitHub. Only a few gh stack subcommands like link and push are needed in a jj repo, since most others manage local tracking irrelevant to jj. Tested against jj v0.43.0, git v2.52.0, gh v2.96.0, and github/gh-stack v0.1.0. Anyone wiring up jj-based stacked PR workflows can find setup notes like these curated on daily.dev."}},{"@type":"Question","name":"Can you add a commit to the middle of an existing GitHub stacked pull request stack?","acceptedAnswer":{"@type":"Answer","text":"No, GitHub's stacked PR feature only allows adding new PRs to the top of an existing stack; attempting to add to the middle returns the error 'Cannot update stack: new PRs must be added to the top of the existing stack.' To insert or remove a commit anywhere but the top, you must delete the stack via the GitHub web UI, create a new bookmark, re-push all upstack commits, and re-run gh stack link to recreate it. Developers debugging stack limitations can track workflow quirks like this via daily.dev."}},{"@type":"Question","name":"How does GitHub's stacked pull requests feature compare to Graphite or git-branchless for stacking workflows?","acceptedAnswer":{"@type":"Answer","text":"GitHub's stacked PRs require manually creating a separate branch for every change in a stack and manually feeding gh stack the list of branches, with no automatic change IDs or a single submit command. Graphite and git-branchless both offer an automatic submit command that figures out branch and stack management on its own, making GitHub's implementation comparatively unambitious and more manual to operate. Teams weighing stacking tools can compare GitHub, Graphite, and git-branchless workflows on daily.dev."}}]}
```

