# プルリクエストをローカルでチェック アウトする

マージ競合を解決したり、変更をテストしたり、コードを修正したりするには、プルリクエストをローカルにチェックアウトします。

> \[!NOTE]
> プル要求の作成者は、アップストリーム リポジトリの保守担当者、またはアップストリーム リポジトリへのプッシュ アクセス権を持つユーザーに、ユーザー所有のフォークで pull request の比較ブランチにコミットするアクセス許可を付与できます。 「[Allowing changes to a pull request branch created from a fork](/ja/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)」を参照してください。

## アクティブなプルリクエストをローカルで修正する

<div class="ghd-tool webui">

1. リポジトリ名の下にある **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-git-pull-request" aria-label="git-pull-request" role="img"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg> \[Pull requests]** をクリックします。

   ![リポジトリのメイン ページのスクリーンショット。 水平ナビゲーション バーでは、\[pull request\] というラベルが付いたタブが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/repository/repo-tabs-pull-requests-global-nav-update.png)

2. プル要求の一覧で、変更するプル要求をクリックします。

3. pull request を開く場所を選択するには、 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code" aria-label="code" role="img"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg> Code** ドロップダウンを選択し、いずれかのタブをクリックします。

![pull request タイトルのスクリーンショット。 ドロップダウン メニューを示す矢印が付いたボタン ("コード" というラベル) は、濃いオレンジで囲まれます。](/assets/images/help/pull_requests/open-with-button.png)

</div>

<div class="ghd-tool cli">

> \[!NOTE]
> GitHub CLI の詳細については、「[GitHub CLI について](/ja/github-cli/github-cli/about-github-cli)」を参照してください。

pull request をローカルでチェックアウトするには、`gh pr checkout` サブコマンドを使用します。
`PULL-REQUEST` を、pull request の番号、URL、またはヘッド ブランチで置き換えます。

```shell
gh pr checkout PULL-REQUEST
```

</div>

## アクティブではないプルリクエストをローカルで修正する

pull request の作成者が要求に応答しない場合、またはフォークを削除した場合でも、その pull request で提案された変更は、新しいプル要求を通じてマージできます。 ただし、変更を加える場合は、pull request を更新するための追加の手順を実行する必要があります。

pull request を開いた後、 GitHub はリモートですべての変更を格納します。 プル要求のコミットは、プル要求がマージされる前でもリポジトリで使用できます。 オープンなプルリクエストをフェッチして、自分のものとして再作成できます。

誰でも、以前に開いた pull request を操作して作業を続けたり、テストしたり、追加の変更を加えて新しい pull request を開いたりすることができます。

1. リポジトリ名の下にある **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-git-pull-request" aria-label="git-pull-request" role="img"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg> \[Pull requests]** をクリックします。

   ![リポジトリのメイン ページのスクリーンショット。 水平ナビゲーション バーでは、\[pull request\] というラベルが付いたタブが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/repository/repo-tabs-pull-requests-global-nav-update.png)

2. \[ \**Pull Requests]\(プル要求\** ) の一覧で、マージするプル要求をクリックします。

3. アクティブではないプルリクエストの ID 番号を検索します。 プルリクエストのタイトルの直後にある数字の並びです。

   ![pull request のタイトルのスクリーンショット。 pull request の ID 番号が濃いオレンジ色の枠線で囲まれています。](/assets/images/help/pull_requests/pull-request-id-number.png)

4. ターミナルまたは Git Bash を開きます。

5. ID 番号に基づいて、プル リクエストへの参照を取得します。 これにより、新しいブランチが作成されます。 pull request ID と、コマンドで作成するローカル ブランチの名前を使用します。

   ```shell
   git fetch origin pull/ID/head:BRANCH_NAME
   ```

6. このプルリクエストに基づく新しいブランチに切り替えます。

   ```shell
   [main] $ git switch BRANCH_NAME
   > Switched to a new branch 'BRANCH_NAME'
   ```

7. このブランチに必要な変更を加えてください。 ローカル テストを実行したり、他のブランチをブランチにマージしたりできます。

8. 準備ができたら、新しいブランチをプッシュしてください。

   ```shell
   [pull-inactive-pull-request] $ git push origin BRANCH_NAME
   > Counting objects: 32, done.
   > Delta compression using up to 8 threads.
   > Compressing objects: 100% (26/26), done.
   > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done.
   > Total 29 (delta 8), reused 0 (delta 0)
   > To https://github.com/USERNAME/REPOSITORY.git
   >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
   ```

9. 新しいブランチで新しい pull request を作成します。

## エラー: 一部の ref をプッシュできませんでした

リモートの `refs/pull/` 名前空間は "*読み取り専用*" です。 そこでコミットをプッシュしようとすると、次のエラーが表示されます。

```shell
! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref)
error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git'
```

> \[!TIP]
> リモート参照を削除または名前変更しても、 `git-remote` の呼び出しはローカルの `refs/pull/origin/` 名前空間には影響しません。