Jujutsu、つまり jj は、新しい version control frontend として試す developer が増えている tool です。Git ecosystem との interoperability を保ちながら、workspace、history rewrite、change management をより明示的に扱えます。ただし、日常の collaboration は local version control だけでは完結しません。Team が GitHub を使っている限り、Pull Request、CI status、review branch、stacked PR も扱う必要があります。

今日紹介する mrjones2014/jj-gh は、その隙間を埋めるための tool です。Rust 製の CLI で、jj alias として設定すると jj pr ... subcommand のように使えます。Terminal から PR を作成し、編集し、PR number で fetch し、jj log に GitHub metadata を表示し、local revision graph に合わせて stacked PR の base を更新できます。

公開時点の GitHub search result では、およそ 22 stars2 forks。主な言語は Rust、license は MIT です。Project は 2026-05-21 に作成され、現在も更新されています。Repository changelog にある latest version は jj-gh-v0.2.5、公開日は 2026-06-11 です。

プロジェクト概要

項目内容
Repositorymrjones2014/jj-gh
位置づけjj user のための GitHub PR 補助 CLI
Stars約 22
Forks2
主な言語Rust
LicenseMIT
Latest releasejj-gh-v0.2.5

PR 操作を terminal に戻す

jj-gh の中心体験は、GitHub を置き換えることではありません。Local revision 操作と web 上の PR 操作を行き来する回数を減らすことです。README では、次のように jj alias として設定する例が示されています。

[aliases]
pr = ["util", "exec", "--", "jj-gh", "pr"]

設定すると、jj pr create <rev> は指定した revision から editor を開きます。そこで PR description を書き、markdown frontmatter で title、base、label、draft、auto-merge などの metadata を設定します。その後、command が GitHub に PR を作成します。

この flow は jj user には自然です。すでに revision id、bookmark、revset で local history を表現しているなら、PR 作成でも <rev> で対象 change を指す方が、branch を探して browser に移動するより一貫しています。

Stacked PR が重要な利用場面

多くの GitHub CLI tool は PR を作成できますが、jj-gh は stacked PR を強く意識しています。pr create は default で local revision graph から近い ancestor bookmark を探します。Ancestor bookmark に open PR があれば、新しい PR の base をそこに合わせられます。

これは Jujutsu workflow では重要です。jj は change を rewrite 可能で並べ替え可能な revision の集合として扱いやすい tool です。その形で stack を管理している場合、PR base が正しいかどうかは reviewer が見る diff range に直結します。

jj-gh には jj pr restack もあります。これは local graph を rewrite する command ではありません。User がすでに local graph を整えたあと、その形に合わせて GitHub 上の各 PR の base branch を更新します。Local history は jj rebase などが担当し、jj-gh はその構造を PR layer に反映します。

jj pr log で PR 状態を commit graph に入れる

もうひとつ実用的なのが jj pr log です。これは jj log に似ていますが、commit graph に PR metadata を注入します。たとえば PR number、URL、CI status、merge status です。

関連する change の stack を扱っていると、local graph だけでは足りないことがあります。どの revision が PR になっているか、CI が成功したか失敗したか、auto-merge や merge queue に関係する状態かを知りたい場面があります。これを log output に出せると、「この revision はどの PR だっけ」と確認する負担が下がります。

Documentation によると、command は temporary config を使って PR related template alias を jj log に注入します。さらに、argument を underlying jj log に渡せます。つまり別の独自 view を作るというより、jj の query capability に GitHub information を足す design です。

外部 PR の fetch は open-source review に向いている

jj pr fetch <pr-num> は Pull Request を local bookmark として fetch できます。Default name は pr-1234/<branch> のような形です。Fork をまたぐ PR にも対応しているため、open-source project の review で便利です。

Jujutsu は現時点で refs/pull/<n>/head のような arbitrary ref を直接 fetch できないため、この operation では colocated git repo と git on PATH が必要です。README はこの制約を明記しています。隠れた動作ではなく、tool boundary として説明されています。

実際の collaboration では、「他人の PR を local で試す」ための機能です。Open-source project をよく review する人や、同僚の PR を local で動かしたい人にとって、jj pr fetch は手で refspec を組み立てるより軽い workflow になります。

Editor-first で PR を書く

pr createpr edit は editor flow を使います。Command は markdown file を開き、body は PR body、frontmatter は title、base、labels、draft、auto_merge などの structured field を持ちます。

この design には 2 つの利点があります。ひとつは、長い PR description を普段の editor、completion、template と一緒に書けること。もうひとつは、tool が変更された metadata だけを適用でき、bot や reviewer があとから追加した状態を不用意に上書きしにくいことです。

jj-gh は PR body template もサポートします。Template は CLI argument、repo config、.github/PULL_REQUEST_TEMPLATE.md、user global config から解決できます。さらに jj template string を使い、revset 内の commit description から initial body を作れます。Multi-commit stack では、空の text area から書くより local history に沿った starting point になります。

Authentication の設計は現実的

GitHub 操作には token が必要です。jj-ghgh_askpassJJ_GH_TOKENGH_TOKEN、config 内の gh_token、さらに gh auth token の利用をサポートします。README は plain token を config に置くより、askpass や GitHub CLI login を使うことを勧めています。

このような detail は地味ですが、小さな developer tool では重要です。PR helper が long-lived token を project config に書くことを前提にすると、安心して導入しにくくなります。jj-gh の config precedence も明確です。CLI flags、environment、extra config、repo config、global config、built-in defaults の順に解決します。

Company repository で使う場合は、token permission を確認する必要があります。Documentation には Metadata、Commit Statuses、Contents、Pull requests、Issues など、機能ごとに必要な permission が整理されています。特に labels が GitHub Issues API を通る点は見落としやすいところです。

Install はまだ early user 向け

Install 方法としては cargo install jj-gh が使えます。Nix flake、overlay、home-manager module も用意されています。Shell completion も生成でき、jj alias として使う場合の completion overlay もあります。

これらを見ると、現時点の target は Rust、Nix、command-line config に慣れた user です。「app を download してすぐ使う」種類の tool ではなく、jj を知らない team にそのまま広げるものでもありません。

ただし target user にとっては、この boundary は自然です。まず Jujutsu を日常的に使っていて、GitHub PR 操作も terminal workflow に入れたい。その前提があると、alias、completion、template、config layering が時間を節約します。

先に試す価値がある人

jj-gh をまず勧めたいのは、次のような人です。

  1. 個人 project や team で jj を使っているが、PR 操作はまだ GitHub web に頼っている。
  2. Stacked PR をよく扱い、local revision graph と GitHub PR base を揃えたい。
  3. jj log の中で PR number、CI status、merge status も見たい。
  4. 外部 PR を review することが多く、GitHub PR を local bookmark として fetch したい。
  5. Early-stage CLI tool の設定コストを受け入れ、GitHub token permission を確認できる。

一方で、team がまだ traditional Git branch workflow だけで動いている場合や、たまに simple PR を開くだけなら、gh pr create で十分かもしれません。jj-gh の価値は、Jujutsu がすでに日常の入口になっているときに強く出ます。

まとめ

mrjones2014/jj-gh の価値は、GitHub PR layer を jj の local model に接続することです。General-purpose な GitHub desktop client ではなく、Jujutsu user のための narrow tool set です。Revision から PR を作り、PR information を commit graph に表示し、外部 PR を fetch し、PR metadata を編集し、local stack の形を GitHub に反映します。

すでに jj を使っていて、stacked PR、open-source review、terminal-first collaboration が日常にあるなら、jj-gh は tool box に入れる価値があります。まだ若い project ですが、方向性ははっきりしています。GitHub collaboration の browser switching を減らし、local history の context を保ったまま作業するための tool です。