最終更新日:2026年06月07日
Git rebase は、コミットを別のベースの上に並べ直して、履歴を見やすく整えるためのコマンドです。merge との違いを押さえたうえで、どの場面で使うかを理解すると、Git の操作が一気に整理しやすくなります。
この記事では、基本の使い方から、コンフリクト対応、interactive rebase、さらに `–onto` や `–keep-base` まで、実務で迷いやすいところを順番にまとめます。まずは「何をしたいときに rebase を選ぶのか」から見ていきましょう。
Git rebaseの基本をまず1分で整理
git rebaseは何をするコマンドか
rebase の役割は、あるブランチの変更を別の基点に再適用することです。作業ブランチで積み上げたコミットを、最新の main や master の先頭に載せ直すイメージです。
たとえば、作業ブランチを最新の main に追従させたいときは、次のように使います。
git checkout feature
git rebase main
この操作をすると、履歴は分岐と合流が目立ちにくい、一直線の形に近づきます。レビュー前に履歴を整えたいときや、コミットの並びを読みやすくしたいときに向いています。
git mergeとの違いを先に押さえる
履歴の見え方と選び方
merge は、分岐した履歴をそのまま統合し、必要ならマージコミットを残します。一方 rebase は、コミットを再配置して直線的な履歴に整えます。どちらが優れているというより、何を残したいかで選ぶのが大事です。
| 項目 | rebase | merge |
|---|---|---|
| 履歴の見え方 | 一直線に整いやすい | 分岐と合流が残る |
| コミットの扱い | 再適用して並べ直す | そのまま結合する |
| 向いている場面 | 整理された履歴を残したいとき | 開発の流れをそのまま残したいとき |
迷ったら、個人作業やレビュー前は rebase、共有された流れを残したいなら merge という切り分けがわかりやすいです。
どんなときに使うと便利か
向いている場面と向かない場面
rebase が便利なのは、作業ブランチを最新の main に追従させたいとき、細かいコミットを整理したいとき、Pull Request を見やすくしたいときです。履歴が散らかりやすい場面ほど、効果がはっきり出ます。
- ローカルの作業ブランチをきれいにしたい
- コミットメッセージや順番を整えたい
- レビューしやすい単位にまとめたい
ただし、すでに他の人と共有しているブランチに対しては注意が必要です。履歴を書き換えるため、相手の作業とぶつかる可能性があるからです。共有ブランチでは、基本的に merge を優先したほうが安全です。
安全に使う手順
実行前チェックとコンフリクト時の復旧
rebase を使う前は、まずそのブランチが共有済みかどうかを確認します。個人作業ブランチなら扱いやすく、公開済みなら慎重に進めるのが基本です。
- 作業ブランチを最新化する
- rebase を実行する
- コンフリクトが出たら内容を修正する
- `git add` で修正を反映する
- `git rebase –continue` で続行する
途中でやり直したくなったら、`git rebase –abort` で開始前の状態に戻せます。最初は「続行」と「中断」の2つだけ覚えておけば十分です。
interactive rebaseでコミットを整える
squash・fixup・editの使いどころ
interactive rebase は、コミットの並びを見ながら内容を編集できる方法です。細かく分かれすぎた履歴をまとめたいときに、とても相性がいいです。
git rebase -i HEAD~3
よく使う操作は次の3つです。
- squash:複数のコミットを1つにまとめる
- fixup:修正コミットを前のコミットに吸収する
- edit:途中で止めて内容を手直しする
まずは squash を覚えるだけでも十分です。レビュー前の整理がかなり楽になります。
もう一歩進める rebase –onto / –keep-base
ベースを付け替えると何が便利か
`–onto` は、コミットの載せ替え先を明示したいときに使います。ブランチのベースを別の位置に移したい、特定範囲だけを切り出したい、という場面で役立ちます。
git rebase --onto master next topic
`–keep-base` は、ベースの考え方を保ちながら rebase したいときに便利です。普段の学習では少し応用寄りですが、複数ブランチを扱う場面では知っていると強いです。
よくある質問
共有ブランチでrebaseしてもいい?
基本的には避けたほうが安全です。rebase は履歴を書き換えるため、すでに他の人が参照しているブランチではトラブルの元になりやすいです。
rebase中に迷ったらどう戻す?
`git rebase –abort` で開始前の状態に戻せます。やり直しよりも、いったん止めて整理したいときに使いやすいです。
rebase-mergesは覚えるべき?
最初から必須ではありません。まずは基本の rebase、merge、interactive rebase を押さえてからで十分です。必要になった段階で覚えるほうが吸収しやすいです。
まとめ
迷ったらどう選ぶか
履歴をきれいに整えたいなら rebase、分岐の流れをそのまま残したいなら merge。まずはこの切り分けで問題ありません。そこに interactive rebase を足すと、Git の履歴整理がかなり扱いやすくなります。
実際に手を動かすと理解が早いので、まずは公式ドキュメントを開いて、小さなブランチで試してみるのがおすすめです。git rebase の公式ドキュメント と git merge の公式ドキュメント を見比べると、役割の違いがかなりクリアになります。
