git merge と git rebase の引数の順番

どちらもよく使うコマンドですが、引数の順番をよく忘れます。

二つの方法で、developブランチの変更をmasterに取り込むことを考えてみます。

git merge

こちらはわかりやすいですね。

git checkout master
git merge develop

git rebase

rebaseする場合はというと、

git checkout develop
git rebase master

ちょうどmasterとdevelopが逆ですね。(だから分からなく...)

checkoutせずに、rebaseする方のブランチ(ここではdevelop)を指定するには、

git rebase master develop

です。

これだけだとmasterはまだ変わっていないので、mergeする場合と全く同じコマンドを続けて打って fast-forward merge を行います。これで、変更をmasterに取り込めました。

その他

mergeに2つめの引数を渡しても、merge先は変わりません。この場合、 octopus merge といって、複数ブランチをまとめてmergeするそうです。(初めて知りました。)

最後に

これぐらいは、調べずに覚えて打てるようになりたいですね。
本当は --help オプションで使い方が見られるのですが、windows だとテキストエディタが立ち上がるせいで、あまり使えていません ... 。

それと、rebaseは用量用法を守って使いましょう!

関連リンク

Git - ブランチとマージの基本

Git - リベース