# スタックプル要求のクイック スタート

GitHub CLIにgh stack拡張機能をインストールし、スタックされたプル要求の最初のセットを作成します。

> \[!NOTE] この機能はパブリック プレビュー段階であり、変更される可能性があります。

スタック プル要求を使用して、大規模なコード変更を、個別に確認およびマージできる、より小さい依存プル要求のチェーンに分割します。

スタックは、同じリポジトリ内の一連のプル要求です。各プル要求は、その下のプル要求のブランチを対象とし、1 つのブランチ (通常はメイン ブランチ) に配置される順序付きチェーンを形成します。 1 つの大きなプル要求の代わりに、一連の小さなプル要求を取得します。 各プル要求には独自のフォーカスされた差分があるため、チームメイトは各レイヤーを個別に確認して承認できます。

## 前提条件

* GitHub CLI (`gh`) 2.90.0 以降、および Git 2.20 以降。
  * `gh auth login`を使用してGitHub CLIを認証します。
* プッシュできる GitHub リポジトリ。

## CLI 拡張機能をインストールする

```shell copy
gh extension install github/gh-stack
```

> \[!TIP]
> GitHub Copilotなどの AI コーディング エージェントでスタック プル要求を使用するには、`gh-stack` スキルをインストールします。
>
> ```shell copy
> gh skill install github/gh-stack
> ```

## 最初のスタックを作成する

1. スタックを初期化するには、リポジトリに移動し、次のコマンドを実行します。 これにより、追跡エントリと最初のブランチが作成されます。

   ```shell copy
   gh stack init
   ```

   最初のブランチに名前を付けるメッセージが表示されます。 既定では、スタックはリポジトリの既定のブランチ ( `main` など) をトランクとして使用しますが、スタックは任意のブランチをターゲットにすることができます。

2. 通常どおり、最初のブランチ (コードの記述、ステージ変更、コミット) で作業します。

   ```shell
   # ... write code ...
   git add .
   git commit -m "helpful-commit-message"
   ```

3. 次の作業の論理ユニットの準備ができたら、新しい分岐をスタックの一番上に追加します。

   ```shell copy
   gh stack add BRANCH-NAME
   # ... write code ...
   git add .
   git commit -m "Another-helpful-commit-message"
   ```

4. すべてのブランチをリモートにプッシュします。

   ```shell copy
   gh stack push
   ```

5. プル要求を作成し、 GitHub上のスタックとしてリンクします。

   ```shell copy
   gh stack submit
   ```

   各プル要求は、正しいベース ブランチで作成されます。 最初のブランチは `main`をターゲットとし、次のブランチ `BRANCH-NAME` は最初のブランチをターゲットにします。 レビュー担当者には、そのレイヤーの差分のみが表示されます。 プル要求は、 GitHub 上のスタックとして自動的にリンクされ、その順序を確認して、それらの間をすばやく移動できます。

6. スタックを表示し、いつでも完全な状態を確認できます。

   ```shell copy
   gh stack view
   ```

   このコマンドは、すべてのブランチ、そのプル要求リンク、状態、およびそれぞれの最新のコミットを表示します。

7. `gh stack add -Am "MESSAGE"`を使用して、すべての変更をステージングし、コミットし、1 つの手順で次のブランチを作成します。 別の `git add` や `git commit`は必要ありません。 現在のブランチにコミットがまだない場合、コミットはそこに着陸します。既にコミットがある場合は、新しいブランチが作成されます。

   ```shell
   # 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"
   ```

8. 準備ができたら、すべてをプッシュし、プル要求を作成します。

   ```shell copy
   gh stack submit
   ```

## 次のステップ

* [スタックされたプル要求の管理](/ja/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests)
* [スタックされたプル要求のマージ](/ja/pull-requests/how-tos/merge-and-close-pull-requests/merging-stacked-pull-requests)
* [プル要求で AI によって生成されたコードをスタックする](/ja/copilot/tutorials/stack-ai-generated-code-in-pull-requests)
* [積み重ねられたプル要求を組織にロールアウトする](/ja/pull-requests/tutorials/roll-out-stacked-prs)