LoginSignup
0
0

More than 3 years have passed since last update.

GithubのPullRequestを直接チェックアウトする

Last updated at Posted at 2019-06-09

GithubのPullRequestを直接チェックアウトする

自分にレビュー依頼が来たPullRequestどうやってチェックしていますか?
複雑なものだと, そのPullRequestをローカルに落としてきて, 実行しないといけないかもしれません。

そうなるとどうやってそのPullRequestを落としてくるかですが…
わざわざ他人のリモートを追加して, 手動マージしていませんか?

実はGithubのPullRequestは(デフォルトでは見れない)ブランチとして存在しています。(自動マージチェックとかしてるじゃんあれは裏で自動でブランチ作ってマージしているからできます。)
なのでPullRequestを落としたければそのブランチをチェックアウトしてあげればいいです。

具体的な方法

以下fastlaneのリポジトリを使ってやってみます。

fastlaneのリポジトリを落としてくると.git/configファイルは次のようになっているはずです。
(sourcetreeで落としてきました。)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = https://github.com/fastlane/fastlane.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

fetchの部分を「+refs/pull/:refs/remotes/origin/pr/」に書き換えてフェッチし直すと…

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = https://github.com/fastlane/fastlane.git
    fetch = +refs/pull/*:refs/remotes/origin/pr/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

こんな感じでPullRequestの番号に対応したブランチが出てきます。
image.png
image.png

ちなみにheadがPRしたそのもののブランチでmergeがマージ後になります。

以上

これなに?

refspec(参照仕様)ってやつです。
要するにブランチを検索するときのフィルタみたいなやつ(今回はそういう用途で使っています)

今まではrefs/heads/以下にあるものを参照するようにしていましたが, refs/pull以下を参照するように変えました。

注意点

1から全部のPRを持っているのでメインのローカルリポジトリに設定たさないで新しいの作ったほうがいいとおもいます。
それでも重ければrefspec調整してください。

0
0
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
0
0