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 | エディタで手順を書き換えて、履歴を整える |
--autosquash | fixup! や 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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。