LoginSignup
1
1

More than 3 years have passed since last update.

【GitHub Tips】プルリクエストをcheckoutする

Posted at

はじめに

みなさん、GitHubでプルリクエストのコミット内容をcheckoutするとき、どのような方法でされていますか?
特にforkを多用する文化でブランチをcheckoutしようと思うと、ブランチはfork先のリポジトリにしか上がっていないため、remoteとしてfork先を登録してからcheckoutする必要があり面倒くさいですよね。
そこで、お使いの方も多いと思いますが、fork先を気にせずプルリクエストの内容をcheckoutする方法をまとめておきたいと思います。

プルリクエストをcheckoutする方法

方法1

この場合、チェックアウトをした後にdetached HEAD状態になります。
つまり、HEADがブランチ以外のコミットオブジェクト(ポインタ)を指している状態になります。
この方法ではブランチが新規に作成されないので、git logで差分を確認したりするだけの場合、非常に有用です。

git fetch origin pull/<IssueID>/head
git checkout FETCH_HEAD

方法1’

方法1の後にコミットをする必要がありブランチを切らなければならない場合、git switchを使用してブランチを作成できます。

git fetch origin pull/<IssueID>/head
git checkout FETCH_HEAD
git switch -c new_branch

方法2

最初からブランチを切ることを決めている場合、この方法が有用です。
fetchの際に、方法1の内容に続けて:ブランチ名と打つだけです。
こうすることによって、fetchのタイミングで(fetchしてきたコミットオブジェクトを参照する)ブランチが作成されます。

git fetch origin pull/<IssueID>/head:new_brach
git checkout new_branch

おまけ

以上の内容をテストするためだけのリポジトリをGitHubに上げていますので、試しに使ってみてください。

git clone https://github.com/ttksm/qiita-checkout-git-pr.git
cd qiita-checkout-git-pr
git fetch origin pull/1/head
...

さいごに

そういえばGitHubのデフォルトブランチの名前がmasterからmainに変更されましたね。
ブランチのプロテクションルールを追加する際に、ブランチ名指定をお間違えのないようご注意ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1