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

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

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

```

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

どのようにすればよいでしょうか？
CC BY-SA 3.0
2015-03-16T01:24:49.097
7949
2016-10-11T03:04:24.677
3922
question
git
他人のPull Requestのマージ方法
以下の手順で実現できるかと思います。

```

    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をマージ
    
```

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

というのと少し違うかもしれませんが、結果的に`repoBのmaster(コミットE)`を取り込んだコミットができるはずです。
CC BY-SA 3.0
2015-03-16T02:47:07.337
7956
2016-10-11T03:04:24.677
2016-10-11T03:04:24.677
3160
3160
7949
answer
github 限定になりますが、簡単な方法としては `git am` が使えます。

<http://mattn.kaoriya.net/software/git/20121225171742.htm>

```

    $ curl -s http://github.com/foobar/barbaz/pr/333.patch | git am
    
```
CC BY-SA 3.0
2015-03-16T05:56:25.337
7969
2015-03-16T05:56:25.337
440
7949
answer