7956


ある他人の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]

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


CC BY-SA 3.0
2015-03-16T01:24:49.097
7949
2016-10-11T03:04:24.677
3922
question
git
他人のPull Requestのマージ方法


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

[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)`を取り込んだコミットができるはずです。


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>

[code]

    $ curl -s http://github.com/foobar/barbaz/pr/333.patch | git am
    
[/code]


CC BY-SA 3.0
2015-03-16T05:56:25.337
7969
2015-03-16T05:56:25.337
440
7949
answer