ForkしているリポジトリにFork元のリポジトリに出されている特定のpull request(以下: PR)を取り込みたいという状況があったのでメモ。
例
元のリポジトリ: http://github.com/example/project 取り込みたいPR: http://github.com/example/project/pull/298
1. Fork元のリポジトリを登録する
root_branch
という名前で登録します。
$ git remote add root_branch git://github.com/example/project.git
Pull Requestsを取り込む
PRを取得する方法は公式のヘルプを参考にすると下記の様な感じ
$ git fetch origin pull/<ID>/head:<BRANCHNAME> $ git checkout <BRANCHNAME>
pullの次のID
はPRのID。GitHubのPRページのタイトルに#nnn
と表示されている番号、取り込みたいPRのURLの末尾にも表示されている。今回の例だと pull/298
となる。
head:以降のBRANCHNAME
はPRをローカルにチェックアウトするブランチ名をかってに指定すればOK。自分が分かる名前にすればなんでも良いっぽい。
今回はFork元のPRを取り込みたいのでgit fetch origin
としてもoriginはForkされたリポジトリを指すので、そこにはPRは出ていないので、1. で登録したFrok元のリポジトリfetchに指定する。
Fork元(roo_branch
)に出ているPR pull/298
を fix_hogehoge_bug
というブランチ名で取ってくる場合は下記のような手順
1. Fetchする
$ git fetch root_branch pull/298/head:fix_hogehoge_bug [new ref] refs/pull/298/head -> fix_hogehoge_bug
2. ブランチの確認
$ git branch fix_hogehoge_bug * master
ローカルにブランチができていればOK。
3. できたブランチにcheckoutする
$ git checkout fix_hogehoge_bug Switched to branch 'fix_hogehoge_bug'
コードに出されているPRの内容が入っているはず。
わーい!
ForkしてあるローカルリポジトリにFork元のを取り込むのは、Fork元を登録して通常origin
とする箇所を自分で登録したFork元の名前に替えるのが少しハマりどころな気がします。
[参考]
- Githubで特定のpull requestをローカルに持ってくる - Qiita
- Checking out pull requests locally - User Documentation
- GitHub Forkしたブランチでフォーク元の差分を取り込む - かもメモ
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/24
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (155件) を見る