LoginSignup
84
61

More than 3 years have passed since last update.

github の pull req ブランチを手元に持ってくる方法

Last updated at Posted at 2013-10-04

Pull Request すると github 上では pull/xxx/headpull/xxx/merge というブランチが作られる。

pull/xxx/head は Pull Request を送ったブランチの head (最新状態)、pull/xxx/merge はマージ対象のブランチとマージした結果の状態を持つブランチである。

それを手元に持ってきて操作することができる。

$ git fetch origin '+refs/pull/*:refs/remotes/pr/*'
 * [new ref]         refs/pull/1/head -> pull/1/head
 * [new ref]         refs/pull/1/merge -> pull/1/merge
 * [new ref]         refs/pull/10/head -> pull/10/head
 ... (abbrev)

チェックアウトするにはその後

$ git checkout -b foobar pull/10/head

とすればよい。手元に持ってきて動作確認する際に、pull request を送った人のレポジトリを git remote add しなくて良いので便利。

See also git current-branch, git fetch-pulls, git pull-dry-run など git alias ネタ

FYI: pull/xxx/merge の状態について

初期状態として pull/xxx/merge は Conflict が起きると作られない。
また、PullRequestをDraftで作った場合でもpull/xxx/merge は作成されない。

一度 pull/xxx/merge が作られた後に、Conflict がおきる commit を push すると、 Conflict しない場合は pull/xxx/merge が更新され、Conflict した場合は pull/xxx/merge が更新されない、という挙動をする。

84
61
1

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
84
61