GitHubは2026年4月13日、プルリクエスト
Stacked PRs on @GitHub are now in private preview. Join the waitlist and learn more belowhttps://
— Jared Palmer (@jaredpalmer) April 13, 2026t. https://co/ e1Yw4id5RM t. co/ ZmK2wm1tV8
これまで、大規模な変更を含むプルリクエストはレビューが大変で、マージに時間がかかり、コンフリクトが発生しやすいのが一般的だった。
今回限定公開されたStacked PRsは、大規模な変更を伴うプルリクエストをレビューしやすくするように、論理的な単位ごとのレイヤーに小さく分割し、この分割したプルリクエストをチェーン
Stacked PRs自体は大規模プルリクエストの既存のコミットを、自動で別々のプルリクエストへ分割する機能ではない。これまで1つのブランチでまとめていた大きな変更を、作成者自身が複数レイヤーのブランチに分ける必要がある。
レイヤーの区切りはコミット単位ではなくブランチ単位で管理され、各レイヤーに対応するプルリクエストは1つ以上のコミットを含むかたちになる。そうしたレイヤーごとのブランチを用意したうえで、GitHub CLIの拡張機能やGitHubのUIを使ってプルリクエストをスタックとしてリンクすることになる。
たとえば、1つのブランチでまとめていた変更をfeat/
これに対応して、feat/gh stack submitで各ブランチに対応するプルリクエストをまとめて作成でき、GitHubのUIでは最初のプルリクエストを通常通り作成したあと、後続のプルリクエストで
スタック内のプルリクエストは、スタック全体、またはその一部までをまとめてマージできる。処理はmainに最も近いプルリクエストから順に進み、今回の例でfeat/
Stacked PRsをGitHub CLIで利用するための拡張機能はgh extension install github/でインストールする。ワークフローとしては、gh stack initで新しいスタックを開始し、各レイヤーに対応するブランチを追加してリモートにプッシュし、最後にgh stack submitでGitHub上にスタックされたプルリクエストのチェーンを作成する。
# 新しいスタックを開始し、最初のブランチを作成する # 既存のブランチ群をスタックに使う場合は --adopt を使う gh stack init feat/auth-layer # 最初のブランチで変更を行い、コミットする # 上に新しいブランチを追加する gh stack add feat/api-endpoints # 追加したブランチで変更を行い、コミットする # スタック内のブランチをまとめてプッシュする gh stack push # スタックの状態を表示する gh stack view # 各ブランチに対応するプルリクエストを作成し、GitHub上でスタックとしてリンクする gh stack submit
また、リモートの最新状態を取り込みつつ、必要に応じてスタック全体を同期するgh stack sync、競合を解消しながらスタック全体をリベースするgh stack rebaseも用意されている。
制限事項として、スタック内の各ブランチ間には完全に線形な履歴が必要であり、フォークをまたいだスタックはサポートされない。また、チェーンの中間にあるプルリクエストをクローズすると、それより上のプルリクエストはマージできなくなる。なお現時点では、スタックの途中にブランチを挿入したり、順序を変更したりすることはできない。
GitHub CopilotなどのAIコーディングエージェント向けには、スタックの構成やgh stackに関するCLI操作を理解させるためのスキルも用意されており、npx skills add github/で追加できる。これにより、対応したエージェントはスタックの作成や管理、スタック内の移動を行えるようになる。