1. はじめに
Gitを使った開発では、コードの変更履歴を適切に管理することが重要です。特に、リベース(Rebase) と Cherry-pick は、履歴を整理しながら特定の変更を適用するのに役立つ強力な機能です。
本記事では、以下の4つのポイントを中心に、実践的なGit操作を解説します。
- RebaseとMergeの違いを理解する
- インタラクティブリベースでコミット履歴を整理する
- Cherry-pickを使って特定のコミットを適用する
- Rebase操作で発生するコンフリクトの解消方法
これらのスキルを身につけることで、Gitの履歴をよりクリーンに保ち、開発の効率を向上させることができます。

2. RebaseとMergeの違いを理解する
Gitでは、ブランチを統合する 方法として Merge と Rebase の2つが存在します。それぞれの違いを明確に理解し、適切に使い分けることが重要です。
Merge | Rebase | |
---|---|---|
特徴 | ブランチを統合し、マージコミットを作成 | ブランチの変更履歴を付け替える |
履歴 | マージコミットが増えるため、分岐の形が残る | 直線的な履歴になり、よりシンプル |
用途 | チーム開発での履歴保持が必要な場合 | 履歴を整理し、クリーンな状態を保ちたい場合 |
例:Mergeの動作
git checkout main
git merge feature-branch
例:Rebaseの動作
git checkout feature-branch
git rebase main
Rebaseは履歴を変更するため、公開リポジトリの共有ブランチでの使用は避ける のが一般的です。
3. インタラクティブリベースでコミット履歴を整理する
インタラクティブリベース(Interactive Rebase) を使うと、過去のコミットを編集・統合・削除でき、履歴を整理できます。
インタラクティブリベースの基本操作
以下のコマンドで、直近の3つのコミットを編集できます。
git rebase -i HEAD~3
実行すると、以下のような画面が表示されます。
pick 123abc 修正1
pick 456def 修正2
pick 789ghi 修正3
この pick を変更することで、以下の操作が可能です。
コマンド | 動作 |
---|---|
pick | そのまま適用 |
reword | コミットメッセージを変更 |
edit | コミット内容を変更 |
squash | 前のコミットと統合 |
drop | コミットを削除 |
例えば、以下のように変更すると、2つのコミットが1つにまとまります。
pick 123abc 修正1
squash 456def 修正2
pick 789ghi 修正3
変更を保存すると、統合されたコミットメッセージを編集できます。
4. Cherry-pickを使った特定コミットの適用
Cherry-pick は、あるブランチの特定のコミットだけを別のブランチに適用する機能です。
Cherry-pickの基本操作
コミットのハッシュ(例:abc123
)を指定して適用します。
git checkout main
git cherry-pick abc123
これにより、該当コミットのみをmainブランチに取り込む ことができます。
複数のコミットをCherry-pickする
git cherry-pick abc123 def456
または、コミット範囲を指定することも可能です。
git cherry-pick abc123^..def456
これを活用することで、必要な変更だけを取り込むことができます。
5. Rebase操作で発生するコンフリクトの解消法
Rebaseの最中に競合(コンフリクト)が発生すると、以下のようなメッセージが表示されます。
CONFLICT (content): Merge conflict in file.txt
この場合、次の手順で解決します。
コンフリクトの解決手順
git status
でコンフリクトしたファイルを確認- 該当ファイルを編集して修正
- 修正後、ファイルをステージングbashコピーする編集する
git add file.txt
git rebase --continue
でRebaseを継続- 必要に応じて、
git rebase --abort
で中断も可能
コンフリクトを適切に解消すれば、スムーズにRebaseを完了できます。
6. まとめ
本記事では、GitのRebase と Cherry-pick の活用法について解説しました。
✅ RebaseとMergeの違い を理解し、適切に使い分ける
✅ インタラクティブリベース を活用して履歴を整理する
✅ Cherry-pick で特定のコミットだけを適用する
✅ Rebase時のコンフリクトを解決 するスキルを身につける
これらをマスターすることで、Gitの履歴をクリーンに保ち、より効率的な開発が可能になります。