概要

GitHubは7月30日、大規模な変更を小さく焦点を絞った一連のプルリクエストへと分割し、依存関係を保ったまま個別に管理・レビューできる「Stacked Pull Requests(スタック型プルリクエスト)」機能をパブリックプレビューとして発表した。数日以内に全リポジトリへの展開が完了する予定で、これまで一部の開発者コミュニティで人気を集めていた「スタック型ワークフロー」がGitHub標準機能として利用できるようになる。

従来、複数の変更が相互に依存する場合、1つの巨大なプルリクエストにまとめてレビュー負荷を高めるか、あるいは手動でブランチを積み重ねて管理し、途中のブランチが更新されるたびにリベース地獄に陥るかの二択を迫られることが多かった。Stacked Pull Requestsはこの課題に対し、各層(レイヤー)が直下の層をターゲットブランチとする明確な依存関係を持たせることで、変更全体の見通しを保ちながら個々の層を独立してレビューできる仕組みを提供する。

技術的な詳細

Stacked Pull Requestsでは、大きな変更を「短く、範囲を絞ったレビュー」を積み重ねる形に再構成する。各PRは下位の層を基点として構築されるため、レビュアーは並行して異なる層を審査でき、変更全体の完成を待たずにレビューを進められる。GitHub CLIには専用の拡張機能gh extension install github/gh-stackが用意されており、ウェブインターフェース、CLI、モバイルアプリ、さらにGitHub Copilotエージェントとの連携を通じてスタックを操作できる。

マージ時の挙動も工夫されている。最上位のPRをマージすると、それに連なる下位の層もすべて自動的に一括でマージされる。一方で、スタックの途中にある特定のPRだけを部分的にマージすることも可能で、その場合は上位のPRが自動的にリベースおよび再ターゲットされ、一貫性が保たれる。既存のブランチ保護ルールやステータスチェックの要件はスタック内の各PRに対しても引き続き適用される。

今後の展開

Stacked Pull Requests自体は数日以内に全リポジトリで利用可能になる見込みだが、マージキューとの統合については今後数週間かけて段階的に展開される予定だとしている。GitHubは公式ドキュメントおよび公開フィードバックディスカッションを通じて、利用者からの意見を継続的に収集していく方針を示している。