質問: ある他人の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'が欲しい ``` どのようにすればよいでしょうか?
回答: 以下の手順で実現できるかと思います。 ``` git clone cd git remote add repoB 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)`を取り込んだコミットができるはずです。