Gitコマンド虎の巻

git rebase

git rebaseは、ブランチを統合して履歴を付け替えるコマンドです。

イメージ

【リベース前】 E---F---G (topicブランチ) / A---B---C---D (masterブランチ)
【リベース後】 E'---F'---G' (topicブランチ) / A---B---C---D (masterブランチ)

構文

(構文)
git rebase [オプション] [値]
【オプション】
オプション説明
-i対話モードでリベースを行う
--abortリベースをキャンセルする
--continueリベースを続ける
--helpコマンドのヘルプを表示する

サンプル

masterブランチに、ブランチ「eda01」と「eda02」をリベースする

git checkout eda01 git rebase master git checkout eda02 git rebase master

eda01、eda02ブランチにチェックアウトした上でリベースするのがポイントです。

コミットをひとまとめにする

git rebase -i [ひとまとめにしたいコミットの一つ手前のコミットID]

コミットIDは、git logコマンドで確認できます。

実行すると統合されるコミットの一覧がvimで表示されるので、統合したいコミットの"pick"を"squash"に変更します。

(変更前)

pick XXXXXXX コミット1 pick YYYYYYY コミット2 pick ZZZZZZZ コミット3

 ↓

(変更後)

pick XXXXXXX コミット1 squash YYYYYYY コミット2 squash ZZZZZZZ コミット3

一番最後のコミットはpickのままにしておくのがポイントです

リベースをキャンセルする

git rebase --abort

リベースを続ける

git rebase --continue

git rebaseでコンフリクトが発生した場合、解消後に続きを行いたい時に使用します。

備考

  • rebaseの実行は、分岐先ブランチをカレントにした上で行います。
    (例)masterから分岐したeda01をmasterにリベースしたい場合は、eda01ブランチ上で行う
  • vim中のコマンドについては、以下ページをご覧ください。
    viコマンド
  • リベースを実行してもブランチの先頭は取り込まれたブランチの先頭のままです。

関連項目

  • git merge:現在の作業ブランチに他のブランチの更新内容を統合して履歴を合流させる