git rebase の使い方

土台を付け替える

書き方

git rebase 土台のブランチ
git rebase -i HEAD~n
git rebase -i --autosquash 土台
git rebase --continue / --skip / --abort / --edit-todo

今のブランチのコミットを、土台のブランチの先に付け直して一直線にします。-i はエディタで手順(pick・reword・edit・squash・fixup・drop)を書き換えて、履歴を整えます。共有済みのコミットの rebase は避けます。

よく使うオプション

オプション意味
-iエディタで手順を書き換えて、履歴を整える
--autosquashfixup! や squash! のコミットを自動で並べる
--onto 新しい土台付け替える先を指定する
--continueコンフリクトを直したあと続ける
--skip今のコミットを飛ばして続ける
--abortやめて始める前に戻す

例

$ git rebase mainSuccessfully rebased and updated refs/heads/feature.

今のブランチのコミットを、main の最新の先に付け直して一直線にします。

$ git rebase -i HEAD~3

最新の 3 つのコミットを、エディタで並べ替えたり、まとめたり(squash)、メッセージを直したり(reword)します。

$ git rebase -i --autosquash main

git commit --fixup で作ったコミットを、直したいコミットのすぐ後ろに自動で並べてまとめます。

$ git rebase --abort

コンフリクトして困ったとき、rebase を始める前の状態に戻します。

よくある間違い・注意

  • rebase はコミットを作り直すので、ほかの人と共有したブランチには使いません。
  • rebase したブランチを送り直すときは、--force ではなく git push --force-with-lease を使います。
  • コンフリクトしたら、直して git add し、git rebase --continue を打ちます(git commit ではありません)。

実際に打って練習する

Git コースの Lv25「土台を移す git rebase」で覚えます(第4章 一本道の峠(リベース))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜10 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

Git コマンド一覧(使い方と例)へ戻る