スタックは、同じリポジトリ内の一連のプル要求です。各プル要求は、その下のプル要求のブランチを対象とし、1 つのブランチ (通常はメイン ブランチ) に配置される順序付きチェーンを形成します。 1 つの大きなプル要求の代わりに、一連の小さなプル要求を取得します。 各プル要求には独自のフォーカスされた差分があるため、チームメイトは各レイヤーを個別に確認して承認できます。
スタック内のすべてのプルリクエストは、直接ターゲットとするブランチに関係なく、スタックのベース (通常は main ) に対するルールに基づいて評価されます。 つまり、ミッドスタック プル リクエストは、下位のプル リクエストと同じ基準で扱われます。
メモ
- スタック プル要求では、すべてのブランチが同じリポジトリに存在する必要があります。 クロスフォーク スタックはサポートされていません。
- GitHub Desktopでは、スタックプル要求はサポートされていません。
スタックされたプル リクエストの可用性
gh stack
GitHub CLI拡張機能は、ローカル開発ワークフローを処理します。 正しい依存関係の順序で分岐を作成および追跡し、ブランチのリベースを維持し、ブランチをプッシュし、プルリクエストを作成してリンクし、レイヤー間を移動します。
GitHub CLI は必須ではありません。 基になる Git 操作は標準であり、代わりに GitHub Web サイトからスタックを作成できます。
Jujutsu や Sapling などの他のツールを使用してローカル ブランチを管理およびプッシュする場合でも、GitHub CLI または GitHub Web サイトを使用して、それらのブランチからプルリクエストのスタックを開くことができます。 「他のツールで積み上げプル リクエストを使用する」を参照してください。
スタックされたプルリクエストのメインブランチ
スタックの トランク は、下位プルリクエストのベース ブランチです。 スタック内の残りのすべてのプルリクエストは、その上に構築されます。 トランクは既定でリポジトリの既定のブランチ(main など)になりますが、リリース ブランチや有効期間の長い機能ブランチなど、任意のブランチにすることができます。
トランクを設定するには:
- GitHub CLIから、
--base BRANCHオプションをgh stack initコマンドに渡します (たとえば、gh stack init --base release auth-layer)。 - GitHub Web サイトから、トランクにしたい任意のブランチに対する下側のプル リクエストを作成します。 スタックの残りの部分は、その上に構築されます。
ブランチ保護規則、必要なチェック、CI はすべて、既定のブランチだけでなく、スタックが対象とする任意のトランクに対して評価されます。
ブランチ保護と必要なチェック
以下はすべて、各プル リクエストがスタック ベースを対象としているものとして評価されます。直下のブランチは対象ではありません。
| ルール | 評価方法 |
|---|