動機
他人の出しているPull Requestについて、自分のブランチとして実験・修正したい、ということがありました。具体的には下記のような状況です。
- 本体GitHubリポジトリ
- Aさんがforkしたリポジトリ
- Pull Requestが出ているブランチ(←これを自分のリポジトリに取り込みたい!)
- 自分がforkしたリポジトリ
- Aさんがforkしたリポジトリ
自分が本体からforkしていない状態であれば、単にAさんのリポジトリをforkするだけで問題のブランチも手に入りますが、残念ながら自分は既にfork済みで、かつ何度かPull Requestを送っているので自分のリポジトリを消すわけにもいきません。
また、問題のブランチがTravis CIでのテストに通るかどうかに興味があったので、手元にPull Requestのコピーを作るだけでなく、自分のブランチとしてGitHubにpushして、自分のTravis CIアカウントで動作確認したい、という状況でした。
手順
以下、下記のような状況だとします。
- Aさんリポジトリ:
ssh://git@github.com:A-san/Spoon-Knife.git
- Pull Requestが出ているブランチ名:
new-feature
- Pull Requestが出ているブランチ名:
- 私のリポジトリ:
ssh://git@github.com:hnw/Spoon-Knife.git
私は次のようにしてnew-feature
ブランチを自分のリポジトリに持ってきました。
$ git checkout master
$ git checkout -b new-feature
$ git remote add A-san ssh://git@github.com:A-san/Spoon-Knife.git
$ git pull A-san new-feature
$ git push origin new-feature
自分のHEADとAさんがブランチを切ったときのHEADがズレているとpullのタイミングでマージコミットができますが、今回は気にしないことにします。
これで手元のnew-feature
ブランチを修正してpushすればTravis CIでの動作確認ができるというわけです。
もっといい手があると思う!
Git魔術師の方々ならどうするか、教えてほしいです!