Gitおさらい:GitHubのfork元の変更を取り込む

これはおさらいじゃないです。IntelliJVCS->Gitにあってずーっと気になっていた「Rebase my GitHub fork」を試したかったのがホントウ。
何してくれる機能かというと、fork元の変更をforkした自分のリポジトリに取り込んでくれる。実際、どんなことしてくれるのかまで分かってなかったので、実験してみた。


forkしたつぶのみを選んだ理由がまさにこれ。初回にmasterブランチをキレイにしたのは、masterをfork元の追跡専用にしたかったから。ちょうど、自分の「つぶのみ」のリモートリポジトリと、片平堂本家の「つぶのみ」はこんな状態にある(昨日やったことは無かったことにしてるw


この (B) , (C), (D) を自分のリモートリポジトリに取り込みたい。早速、IntelliJから VCS->Git->Rebase my GitHub forkを実行してみると、こんなダイアログが表示された。


https://github.com/katahirado/tsubunomi.gitをリモートリポジトリに加えるか?」みたいなこと聞いてきたので、断る理由もないから「Yes」と答える。IntelliJが裏で叩いてたgitコマンドは、たぶんこれ。

git fetch https://github.com/katahirado/tsubunomi.git +refs/heads/*:refs/remotes/upstream/*


その後、こんなダイアログが表示される。


どうやら片平堂本家は「refs/remotes/upstream/master」ってのに登録されたみたい。特に設定変更するところもなかったので、そのままRebaseを実行。裏側ではこんなコマンドが実行されてた。

git rebase -v -m refs/remotes/upstream/master


その後は特に何事も無くRebase完了(masterブランチをキレイにしてたので、当然ちゃあ当然か)。結果、こんな風になる。


IntelliJのChangesツールウィンドウでみるとこんな感じ。HEADがupstream/masterと同じなんだけど、これだとそこまで教えてくれない。


でもSourceTreeでみると、それもわかる。


正直コミットグラフはSourceTreeがもっとも優秀な気がする...。そうは言ったものの、これらの一連の作業をすべてIntelliJ上でこなせた事からもIntelliJのgitサポートの本気度合いがうかがえる。去年までは個人的にはhg推しだったのだけれど、IntelliJのサポートにこんだけ差を付けられるとgit/GitHubに乗り換えたくなるのは仕方が無いことw


なんにせよ、よく分かんない「GitHubのfork元と再同期する」がコマンド一発で出来ちゃうIntelliJスゴイ!!:-)