概要

GitHubは10月6日、1つの大きな変更を複数の小さなプルリクエスト(PR)に分割し、連鎖させて管理する「スタック型プルリクエスト」機能を、github.comの全プランで正式提供開始した。スタックとは「下位のPRがmainブランチを対象とし、その上の各PRが1つ下のブランチを対象とする、順序付きのブランチの連なり」と定義されており、大きな変更を個別にレビュー可能な単位に分割しつつ、最終的には1つのまとまった変更としてマージできる点が特徴だ。GitHub Enterprise Serverへの対応も今後のリリースで予定されている。

技術的な改善点

今回のGA版では、スタック運用上の実務的な課題に対応する改善が複数加えられた。まず、ベースブランチが更新されてリベースが発生した際も、変更のないコード部分の承認状態が維持されるようになった。これは、古い承認を自動的に無効化するポリシーを設定しているリポジトリでも機能する。リベースされたコミットは暗号署名を保持したまま、元の作成者情報も維持される。マージキューとの統合も強化され、スタック全体が単一のマージグループとして扱われるようになり、マージコミット方式を使う場合はPRごとに1つのマージコミットが生成される。さらに、ベースブランチが削除された場合にスタックが自動的に再ターゲットされる機能や、バイパス権限を持つユーザーがスタック内の最下位の未マージPRをマージできる機能も追加された。ナビゲーション面では、PRヘッダーにスタックの文脈が常時表示されるようになり、Shift+J・Shift+Kのキーボードショートカットでスタック内のPR間を移動できるほか、PRがスタックに参加・離脱したタイミングを記録するタイムラインイベントも加わった。なお、スタックの自動マージ機能は今後数週間にわたって段階的に展開される予定だ。

gh CLIとAIエージェントへの対応

スタック操作を支援するgh stack CLI拡張機能はバージョン0.2.0(10月2日リリース)で、Gitワークツリーのサポートが追加され、初期化やチェックアウトの処理が改善された。利用にはgh v2.0以上、Git 2.36以上が必要となる。注目すべき点として、gh skill install github/gh-stackコマンドでAIコーディングエージェント向けのスキルをインストールできるようになり、エージェントが大規模な変更を自動的にスタック型PRへ分割できるようになった。またpull_requestのWebhookにもstackedアクションが新設され、外部ツールからのスタック監視が容易になっている。

導入効果と評価

GitHubが公表した数値によると、スタック機能を利用しているリポジトリは、利用していない同規模のリポジトリと比較してマージされるコード量が9%増加し、マージまでの時間も5%短縮されたという。また、GitHub上位1%のアクティブなリポジトリの3分の2以上がすでにこの機能を利用しているとされる。Astralの創業者Charlie Marsh氏は「GitHubのスタック型PRを一度マージしただけで、これは素晴らしいと確信した」とコメントしており、大規模な変更を小さな単位に分割してレビューしやすくするワークフローが、実際の開発体験の改善につながっていることがうかがえる。gh CLIやAIエージェントとの連携強化により、今後は人間だけでなくAIコーディングエージェントが生成する変更についても、スタック型のレビューフローが標準的な選択肢になっていく可能性がある。