最初に覚えた共同開発におけるgit rebaseの使い方

git rebaseは、ブランチの変更点(コミット)をまとめて見やすくするコマンド。margeがコミットされた順にバラバラに結合されるのに対して、git rebaseは、ブランチのコミット群単位で結合される。しかも、結合先ブランチ(作業ブランチ)のコミット群を最新にして結合される(pushしていない参照先ブランチのコミットのすぐ下に結合される)

 

なぜ、rebaseするか?

共同開発している時に、統合用ブランチ(master、develop)がブランチを切った時より新しいコミットがされている場合がよくある。その場合に、統合用ブランチの最新の差分を作業ブランチに取り込む際にrebaseをよく使用する。

主に、統合用ブランチに、作業ブランチをマージする前(もしくはpull requestする前)に、最新の統合用ブランチから自分の作業ブランチにrebaseしてからマージする(もしくはpull requestする)といった使い方が多い。(詳しくはチームの運営方針に合わせる)

 

git rebase使用例(作業ブランチからdevelopにpull requestを送る)

 

1. developをgit pullして最新にする(リモートから差分を取り込む)

$ git pull

 

2. 作業ブランチにチェックアウトし、developからrebaseする(rebaseする場所は、常に自分の作業ブランチにいることを確認)

$ git rebase develop

 

3. リモートにプッシュする

$ git push
// エラー起こるときは、$ git push -f

 

4. リモートで作業ブランチからdevelopにpull requestを送る