Git/GitHubの「中級編:ブランチとマージ」において、「リベース(rebase)の理解と使用」は非常に重要なテーマです。以下にその概要と使い方について詳しく解説します。
リベース(rebase)とは何か
**リベース(git rebase)**は、あるブランチの基点(ベース)を別のブランチの最新の状態に付け替える操作です。
より具体的には、自分の作業ブランチのコミット群を、対象のブランチの先端に再適用することで、履歴をまるで一筆書きのように「直線的に整える」ことができます。
マージとの違い
| 項目 | マージ (git merge) |
リベース (git rebase) |
|---|---|---|
| 履歴の見た目 | 分岐が残る | 一直線になる |
| コミット履歴 | マージコミットが追加される | 個々のコミットを「再適用」する |
| コンフリクト | マージ時に1回発生 | 各コミットの適用時に個別に発生 |
| 使用目的 | 履歴を正確に保存したいとき | 履歴を整理して読みやすくしたいとき |
基本的な使い方
▼ 例:feature ブランチを main にリベースする
feature ブランチを main にリベースするこの操作により、featureブランチ上のコミットは、mainブランチの最新のコミットの先に再適用されます。
インタラクティブリベース(git rebase -i)
git rebase -i)履歴を編集・整理したいときには、インタラクティブリベースが便利です。
このコマンドで、直近3つのコミットに対して次のような操作が可能です:
-
pick: そのまま適用 -
reword: コミットメッセージの修正 -
edit: コミットの内容を修正 -
squash: 前のコミットと統合 -
drop: コミットを削除
リベースの注意点
-
公開済みのブランチに対してリベースしない
-
リベースは履歴を書き換えるため、他の開発者と共有しているブランチには使用しないことが原則です。
-
-
コンフリクトが発生する場合がある
-
コミットごとに適用されるため、マージよりも多くのコンフリクトが起きることもあります。
-
コンフリクト発生時は、修正後に次のように操作します:
-
-
リベースの取り消し
-
リベース中に問題が起きた場合は、次で中止できます:
-
実務での活用例
-
自分のローカル作業ブランチを最新の
mainに追従させたいとき -
PRを提出する前に履歴を整えてきれいな状態にしたいとき
-
複数の細かいコミットを1つにまとめたいとき(squash)
まとめ
-
git rebaseは履歴を整理するための強力なツールです。 -
マージとの使い分けを理解し、チーム運用の方針に従って使用すべきです。
-
単独作業時やPR提出前のローカル履歴整理において特に有効です。
生成日:2025/06/09