章: 第5章: 変更履歴を実務で整える
merge と似て見えて、目的が少し違う
Gitの実務に少し慣れてくると、merge に加えて rebase という言葉をよく見かけます。
ここで混乱しやすいのは、「どちらもブランチをまとめる操作に見える」ことです。確かに結果として変更を統合する点は似ていますが、意図は同じではありません。
rebase は、変更を取り込むと同時に、履歴の並びを整えるために使われる操作です。
つまり実務では、「差分を入れる」だけでなく、「履歴を読みやすく保つ」ために使われることが多いです。
どんな場面で使うのか
たとえば、main が先に進んでいる間に、自分の作業ブランチでも数コミット進んでいたとします。
このままでは、自分のブランチは少し古い土台の上に乗っています。
そこで rebase を使うと、自分のコミットをいったん外して、最新の main の上に積み直すような形になります。
git fetch origin
git switch feature/login-validation
git rebase origin/main
こうすると、履歴が「最新の本流の続き」として並びやすくなります。
merge と rebase のざっくりした違い
| 操作 | 何を重視するか |
merge |
履歴をそのまま残して統合する |
rebase |
履歴を直線的に整えて統合しやすくする |
merge は「起きたことをそのまま残す」感覚に近く、rebase は「読みやすい履歴に並べ直す」感覚に近いです。
どちらが絶対に正しいというより、チームの運用方針に合わせて使い分けます。
実務でありがちな使いどころ
- プルリクエスト前に履歴を整理したいとき
- 長く作業したブランチを最新
mainに追従させたいとき - マージコミットを増やしすぎず、履歴を読みやすく保ちたいとき
特にレビュー前のブランチ整理では、rebase によって差分が読みやすくなることがあります。
注意点
rebase は便利ですが、履歴を書き換える操作でもあります。ここが重要です。
そのため、すでに他人と共有している履歴に対して雑に使うと、履歴の認識がずれて混乱を招くことがあります。
初心者のうちはまず、
- 自分の作業ブランチで使う
- 公開済みブランチでは慎重に使う
という感覚を持っておくと安全です。
チェックポイント:
rebaseは「変更を取り込む」だけでなく「履歴を整える」操作。この視点を持つと意味が理解しやすくなります。
まとめ & 次のステップ
rebaseは履歴を整えながら変更を取り込む操作mergeはそのまま統合、rebaseは並びを整えて統合という違いがある- 実務ではレビュー前や本流追従で使われやすい
- 便利だが履歴を書き換える操作なので慎重さが必要
- まずは自分の作業ブランチで使う前提で考えると安全
次回は squash merge を扱います。 複数コミットを1つにまとめて本流へ取り込む考え方を整理しましょう。