Git(hub)でフォークしたリポジトリに、オリジナルリポジトリの変更を取り込む
いつも忘れて調べなおすことになるので、メモ。
ケース
例えば、こんなリポジトリ。
オリジナルのプラグインでほんのすこしだけカスタマイズしたいから、ちょっとだけ修正して使ってる、みたいな。
で、時間が経って、変更されているものもあるから取り込みたい。
というときの作業。
参照
結論、Githubのヘルプを見ればいいわけですね。はい、いつも見ます。いつもたどり着くのに時間がかかりますが。
https://help.github.com/articles/fork-a-repo/help.github.com
https://help.github.com/articles/syncing-a-fork/help.github.com
この記事のこの後の内容は、ヘルプの内容をただただ自分のためにメモしたものです。
作業
ざっくり書くとこんな感じでしょうか。
git clone ${forked_repo} ${forked_repo_dir} cd ${forked_repo_dir} git remote add upstream ${original_repo} git fetch upstream git checkout master # forked master git merge upstream/master
自分の(忘れた後の)理解のために、細かく書いていくと、、、
フォークしてカスタマイズしたリポジトリGitHub - sugilog/molokai: Molokai color scheme for Vimに、オリジナルのリポジトリGitHub - tomasr/molokai: Molokai color scheme for Vimの修正内容を取り込む。
自分のリポジトリをclone
。
git clone git@github.com:sugilog/molokai.git ~/workspace/molokai
cd ~/workspace/molokai
オリジナルのリポジトリをupstream
という名前でリモートブランチとして登録。名前はかぶらなきゃOK。
git remote add upstream https://github.com/tomasr/molokai.git git fetch upstream
自分のリポジトリのブランチをcheckout
。とりあえずmaster
。
git checkout master
最後に、オリジナルの内容をマージ。
git merge upstream/master
あとはコンフリクトを直すなりなんなり。
結論、マージ作業なわけです。
GithubのウェブUIからのプルリク作業に慣れてきった生活で、簡単なマージ作業でさえ忘れてしまう。。。
最後に
molokai、お世話になってます。