スタック プル要求を使用して、大規模なコード変更を、個別に確認およびマージできる、より小さい依存プル要求のチェーンに分割します。
スタックは、同じリポジトリ内の一連のプル要求です。各プル要求は、その下のプル要求のブランチを対象とし、1 つのブランチ (通常はメイン ブランチ) に配置される順序付きチェーンを形成します。 1 つの大きなプル要求の代わりに、一連の小さなプル要求を取得します。 各プル要求には独自のフォーカスされた差分があるため、チームメイトは各レイヤーを個別に確認して承認できます。
前提条件
- GitHub CLI (
gh) 2.90.0 以降、および Git 2.20 以降が必要です。gh auth loginを使用して GitHub CLI を認証します。
- プッシュできる GitHub リポジトリ。
CLI 拡張機能をインストールする
gh extension install github/gh-stack
gh extension install github/gh-stack
ヒント
GitHub Copilotなどの AI コーディング エージェントでスタック プル リクエストを使用するには、gh-stack スキルをインストールします。
gh skill install github/gh-stack
gh skill install github/gh-stack
最初のスタックを作成する
-
スタックを初期化するには、リポジトリに移動し、次のコマンドを実行します。 これにより、追跡エントリと最初のブランチが作成されます。
Shell gh stack init
gh stack init最初のブランチに名前を付けるよう求められます。 既定では、スタックはリポジトリの既定のブランチ (
mainなど) をトランクとして使用しますが、スタックは任意のブランチをターゲットにすることができます。 -
通常どおり、最初のブランチで作業します。コードを記述し、変更をステージし、コミットします。
# ... write code ... git add . git commit -m "helpful-commit-message" -
次の論理的な作業単位の準備ができたら、新しいブランチをスタックの一番上に追加します。
Shell gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message"
gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message" -
すべてのブランチをリモートにプッシュします。
Shell gh stack push
gh stack push -
プルリクエストを作成し、GitHubでスタックとしてリンクします。
Shell gh stack submit
gh stack submit各プルリクエストは、正しいベース ブランチで作成されます。 最初のブランチは
mainをターゲットとし、次のブランチBRANCH-NAMEは最初のブランチをターゲットにします。 レビュー担当者には、そのレイヤーの差分のみが表示されます。 プルリクエストは、GitHub 上のスタックとして自動的にリンクされ、その順序を確認して、それらの間をすばやく移動できます。 -
スタックを表示し、いつでも完全な状態を確認できます。
Shell gh stack view
gh stack viewこのコマンドは、すべてのブランチ、そのプル リクエスト リンク、状態、およびそれぞれの最新のコミットを表示します。
-
gh stack add -Am "MESSAGE"を使用して、すべての変更をステージングし、コミットし、1 つの手順で次のブランチを作成します。 別のgit addやgit commitは必要ありません。 現在のブランチにまだコミットがない場合、そのブランチにコミットされます。既にコミットがある場合は、新しいブランチが作成されます。# Commit lands on the current branch gh stack add -Am "Auth middleware" # Current branch already has commits, so this creates the next branch gh stack add -Am "API routes" -
準備ができたら、すべてをプッシュし、プルリクエストを作成します。
Shell gh stack submit
gh stack submit