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