githubのforkを完全にforkする

 GitHubのGraphs->Membersにforkedの継承ツリーが構成されています。
で、PRとかはこの構成の上位upstreamに投げられるので本家に取り込んでもらう分には
便利なのですが、独自修正が積み重なってきたときに独立ブランチにした欲求がわいてもきます。
(本家に取り込んで貰わない独自実装が積み重なるとフォークしたくなりますよね><)

ので、やってみたので、その方法をメモ*1

GitHubのカジュアルforkした場合

 GitHubのForkボタンでforkしたのを、cloneしてfork先をupstreamとして登録したらこんな感じ。
普通に「upstreamからの取り込みしたい><」等で、ローカルリポジトリは、こんな構成になるよね?

$ git branch
  master
* upstream

で、upstreamをmaster取り込みつつ、修正してPRだしたり、独自修正したり、実験ブランチつくったり遊ぶと思います。

完全にforkする

最初にgithubで、完全フォークした独立ブランチを突っ込む、新規リポジトリを作成。

で、localのリポジトリに、forkブランチを作成します。
(masterに独自修正が積み重なったので、forkしたいという設定)

$ git checkout master
$ git checkout -b forked
$ git branch
* forked
  master
  upstream
forkedブランチのremoteを、githubに新規作成したfork用に紐付け

fork用に作成した新規リポジトリに紐つける。
(githubの新規リポジトリ作成時の、マニュアルをちょっと弄っただけ)

$ git remote add forked git remote add origin git@github.com:murasesyuka/perfect_forked.git
$ git remote add forked git@github.com:murasesyuka/perfect_forked.git

で、pushすれば終わり。

$ git push -u forked


はい、上記方法でローカルリポジトリで、

  • upstream(本家)と
  • upstreamからの取り込み及びPR用のmaster(本家クローン)に
  • 完全にフォークしたforked(本家クローンからの完全フォーク版予定)の

をがんばって管理していきましょう><

*1:やってみるとなんか普通に普通の方法で、やっぱりgit便利