プルリクエストをローカルでチェック アウトする
あなたのリポジトリのフォークまたはブランチから誰かがプルリクエストを送ってきた時に、マージコンフリクトを解決するため、またはあなたのローカルのコンピュータで変更をテストおよび確認するため、GitHub でマージする前にローカルでマージしたい場合があります。
メモ: 作業のマージを早めるため、プルリクエストを作成した人に、上流リポジトリへのプッシュアクセスがある人すべてに、プルリクエストへのコミットをプッシュできるように依頼することもできます。 詳しい情報については、「フォークから作成されたプルリクエストブランチへの変更を許可する」を参照してください。
アクティブなプルリクエストをローカルで修正する
-
リポジトリ名の下で [Pull requests] をクリックします。
-
プルリクエストのリストで、マージしたいプルリクエストをクリックします。
-
プルリクエストの下の方にあるマージボックスで、[command line instructions] をクリックします。 手順に従い、提案されたプルリクエストをローカルにダウンロードしてください。
-
また、提案された変更を GitHub Desktop で表示するには、[open this in GitHub Desktop] をクリックします。
アクティブではないプルリクエストをローカルで修正する
プルリクエストがアクティブでない場合、コードオーナーが応答していないか、フォークを削除しているかのいずれかです (後者の可能性が高いでしょう)。 フォークが削除されても、プルリクエストはマージできます。 一方、プルリクエストを変更したくても作者が応答しないという場合、プルリクエストを更新するには追加的な手順を踏まなければなりません。
プルリクエストがオープンされると、GitHub はすべての変更をオンラインで保存します。 つまり、プルリクエストがマージされる前でも、リポジトリ内のプルリクエストにあるコミットが利用できます。 これにより、オープンなプルリクエストをフェッチして、自分のために再作成できます。
誰でも、以前にオープンされたプルリクエストを使って、さらに作業を進めたり、テストしたりできます。そこへ変更を追加して新しいプルリクエストをオープンすることもできます。 ただし、プルリクエストをマージできるのは、プッシュアクセスを持つコラボレータだけです。
-
リポジトリ名の下で [Issues] あるいは [Pull requests] をクリックします。
-
[Pull Requests] リストで、マージしたいプルリクエストをクリックします。
-
アクティブではないプルリクエストの ID 番号を検索します。 ID 番号は、プルリクエストのタイトルの後に付いている数字です。
-
ターミナルターミナルGit Bashターミナル を開いてください。
-
ID 番号を元に、プルリクエストへの参照をフェッチします。この過程で、新しいブランチが作成されます。
$ git fetch origin pull/ID/head:BRANCHNAME
-
このプルリクエストをベースにする新しいブランチに切り替えます:
[master] $ git checkout BRANCHNAME > Switched to a new branch 'BRANCHNAME'
- これで、このブランチに対して任意の操作を実行できます。 ローカルでのテスト、"master" を含む他のブランチからのマージも行えます。 納得のいくまで修正しましょう。
-
準備ができたら、新しいブランチを以下のようにプッシュできます:
[pull-inactive-pull-request] $ git push origin BRANCHNAME > 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://hostname/username/repository.git > * [new branch] BRANCHNAME -> BRANCHNAME
- 新しいブランチで、新しいプルリクエストを作成 します。
Error: Failed to push some refs
リモートの "refs/pull/" 名前空間は読み取り専用です。 ここにコミットをプッシュしようとすると、以下のエラーが表示されます:
! [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'
参考: リモート参照の削除や名前変更を行った場合、ローカルの refs/pull/origin/
名前空間は git-remote
への呼び出しに影響されません。