Fork したリポジトリからの Pull Request へ checkout する方法

この場合、他の人の Fork リポジトリから、Pull Request が送られてくることになりますが、それをローカルで確認したい時、どうしているでしょうか?

リポジトリ構成としては以下を想定しています。

  • upstream: Fork 元のリポジトリ
  • origin: 自分で Fork したリポジトリ

手順

  1. origin を clone
  2. upstream を 追加
  3. PR ブランチを fetch して checkout

1. origin を clone

まずは普通に、Fork した個人のリポジトリを clone します。

ここでは特に変わったことはしません。

# origin を clone
git clone <origin>

2. upstream を 追加

次に、Fork 元となったリポジトリをリモートリポジトリに追加します。

これで upstream と origin を一緒に扱うことが出来るようになります。

基本的には origin 上で開発を行い、upstream へ PR をして、merge されたら、origin へ取り込むという流れだと思います。

# upstream を追加
git remote add upstream <upstream>

3. PR ブランチを fetch して checkout

他の人が出した PR をローカルで確認したいので、PR ブランチを fetch して checkout します。

fetch でブランチを指定する部分をpull/<ID>/head:pr/<ID>のようにすると、PR 番号のブランチを取得することが出来ます。

# PR を fetch して checkout
git fetch upstream pull/<ID>/head:pr/<ID>
git checkout pr/<ID>

不要になったら通常のブランチを削除する方法と同じように削除することが出来ます。

# 不要になったら delete
git branch -D pr/<ID>

sh を alias に登録

PR を checkout するコマンドを毎回入力するのは面倒なので、スクリプトを作ってみました。

#!/bin/bash

# 標準入力を受け取る
ID=${1}

git fetch upstream pull/$ID/head:pr/$ID
git checkout pr/$ID

alias gcopr='/path/to/gcopr.sh'の様に、任意の alias に登録して、使いやすくしています。

# 例えば、#10のPRがcheckoutされる
gcopr 10

以上

Git