他人のPull Requestのマージ方法


ある他人のGitリポジトリrepoAに、同リポジトリからフォークされたrepoBのmasterからPull Requestが届いていました。  
そのPull Requestは長い間マージされず放置されています。

自分はその機能が欲しいので、自分でrepoAをフォークしたrepoCに、repoBのmasterをマージして個人的に使いたいと思いました。

しかしrepoBがフォークされてからrepoAは何度か修正されているので、repoBのmasterをrepoAのmasterにrebaseしたものを、repoCにマージしたいです。  
図に表すと下記のような感じです。

[code]

    repoA: A → B → C → D
    repoB:     `-→ E
    repoC: EをDでrebaseしたE'をマージしたD'が欲しい
    
[/code]

どのようにすればよいでしょうか？




以下の手順で実現できるかと思います。

[code]

    git clone <repoCのURL>
    cd <cloneしたディレクトリー>
    git remote add repoB <repoBのURL>
    git fetch repoB
    git fetch origin
    git checkout master
    git pull origin master # 念のため / この時点でローカルのリポジトリーのmasterはコミットDの状態
    git merge repoB/master # コミットDに対してコミットEをマージ
    
[/code]

> EをDでrebaseしたE'をマージしたD'が欲しい

というのと少し違うかもしれませんが、結果的に`repoBのmaster(コミットE)`を取り込んだコミットができるはずです。




以下の手順で実現できるかと思います。

[code]

    git clone <repoCのURL>
    cd <cloneしたディレクトリー>
    git remote add repoB <repoBのURL>
    git fetch repoB
    git fetch origin
    git checkout master
    git pull origin master # 念のため / この時点でローカルのリポジトリーのmasterはコミットDの状態
    git merge repoB/master # コミットDに対してコミットEをマージ
    
[/code]

> EをDでrebaseしたE'をマージしたD'が欲しい

というのと少し違うかもしれませんが、結果的に`repoBのmaster(コミットE)`を取り込んだコミットができるはずです。

