Cherry-pick(チェリーピック)とは?Git初心者向けに特定のコミットだけ取り込む方法をわかりやすく解説
Cherry-pick(チェリーピック)とは、別のブランチにある特定のコミットだけを選んで現在のブランチへ取り込むGitの操作です。
通常のMergeではブランチ全体の変更を取り込みますが、Cherry-pickを利用すると必要なコミットだけを反映できます。
「Mergeとの違いは?」「どんな場面で使うの?」という初心者向けに、Cherry-pickの仕組みや使い方をわかりやすく解説します。
Cherry-pickとは?
Cherry-pick(チェリーピック)は、日本語では「良いものだけを選び取る」という意味があります。
Gitでは、別のブランチにある特定のコミットだけを選択し、現在のブランチへ適用する操作を指します。
例えば、10件のコミットがあるブランチから、不具合修正のコミットだけを取り込みたい場合に利用します。
| 項目 | 内容 |
|---|---|
| 正式名称 | Cherry-pick |
| 日本語の意味 | 必要なものだけ選び取る |
| 目的 | 特定のコミットだけを取り込む |
| 利用場面 | 不具合修正、緊急対応、リリース作業 |
Cherry-pickはなぜ必要なのか
開発中のブランチには、複数の機能追加や修正が含まれていることがあります。
しかし、本番環境へ反映したいのはその中の1件の不具合修正だけというケースも少なくありません。
そのような場合にCherry-pickを利用すると、必要なコミットだけを安全に取り込めます。
Cherry-pickの流れ
- 取り込みたいコミットIDを確認する
- 取り込み先のブランチへ切り替える
- Cherry-pickを実行する
- コンフリクトがあれば解消する
- コミット内容を確認する
- 必要に応じてPushする
Cherry-pickとMergeの違い
| Cherry-pick | Merge |
|---|---|
| 特定のコミットだけ取り込む | ブランチ全体を取り込む |
| 必要な修正だけ反映できる | すべての変更が反映される |
| 部分的な適用に向いている | ブランチ統合に向いている |
初心者は、Mergeは「ブランチ単位」、Cherry-pickは「コミット単位」で変更を取り込むと覚えると理解しやすくなります。
IT現場での利用例
緊急の不具合修正
開発ブランチにある修正のうち、不具合修正だけを本番用ブランチへ取り込みます。
リリース直前の対応
リリース対象外の機能を含めず、必要な修正だけを反映できます。
保守ブランチへの反映
複数のバージョンを保守している場合、同じ修正を別バージョンへ適用する際に利用されます。
社内システム開発
テスト環境で確認済みの修正だけを本番リリース用ブランチへ反映するケースがあります。
GUIでCherry-pickする方法
SourceTreeやGitKrakenなどのGitクライアントでは、対象コミットを右クリックして「Cherry-pick」を選択するだけで実行できます。
- コミット履歴を表示する
- 対象コミットを選択する
- 「Cherry-pick」を実行する
- コンフリクトがあれば解消する
CUI(コマンド)でCherry-pickする方法
コミット履歴を確認する
git log –oneline
ブランチを切り替える
git checkout main
Cherry-pickを実行する
git cherry-pick コミットID
コンフリクト解消後に続行する
git cherry-pick –continue
Cherry-pickを中止する
git cherry-pick –abort
確認結果の見方
| 表示内容 | 意味 |
|---|---|
| Successfully applied | 正常に適用された |
| CONFLICT | コンフリクトが発生 |
| The previous cherry-pick is now empty | 取り込む変更がなかった |
業務でよくあるトラブル
| トラブル | 原因 |
|---|---|
| コンフリクトが発生した | 同じファイルを別ブランチでも修正している |
| コミットIDを間違えた | 履歴の確認不足 |
| 変更が重複した | 同じ修正を複数回取り込んだ |
| 期待した動作にならない | 関連するコミットを取り込んでいない |
原因の切り分け
Cherry-pickで問題が発生した場合は、次の順番で確認しましょう。
- 現在のブランチを確認する
- コミットIDが正しいか確認する
- git logで履歴を確認する
- コンフリクトが発生していないか確認する
- 関連するコミットが必要か確認する
影響範囲を確認する
- 現在のブランチ
- 対象ファイル
- 関連機能
- リリース対象
Cherry-pickは特定のコミットだけを取り込みますが、関連するコミットが不足すると、ビルドエラーや動作不良が発生する可能性があります。
初心者がやりがちなミス
- Mergeと同じ操作だと思う
- コミットIDを間違える
- 関連するコミットを取り込まない
- コンフリクトを十分確認しない
- 現在のブランチを確認せず実行する
業務で上司へ報告するポイント
- 取り込んだコミットID
- 対象ブランチ
- 変更内容
- コンフリクトの有無
- 影響範囲
例:「不具合修正のコミットのみCherry-pickでreleaseブランチへ反映しました。コンフリクトは発生しておらず、影響範囲はログイン機能のみです。」
エスカレーションするタイミング
- どのコミットを取り込むべきか判断できない
- 複数のコンフリクトが発生した
- 関連コミットが不明
- 本番環境へ影響する可能性がある
- Cherry-pick後に動作不良が発生した
実務で役立つポイント
Cherry-pickは緊急の不具合修正(Hotfix)でよく利用されます。
例えば、開発ブランチには未完成の機能が含まれていても、本番環境では不具合修正だけを早急に反映したいことがあります。そのような場面では、MergeではなくCherry-pickを使うことで、必要最小限の変更だけを適用できます。
ただし、依存するコミットがある場合は、一つのコミットだけでは正常に動作しないこともあります。実行前に変更内容や影響範囲を十分確認しましょう。
関連するIT用語
- Git
- コミット(Commit)
- マージ(Merge)
- リベース(Rebase)
- ブランチ(Branch)
- コンフリクト(Conflict)
- プル(Pull)
- プッシュ(Push)
- リポジトリ(Repository)
- Hotfix(ホットフィックス)
よくある質問(FAQ)
Cherry-pickとMergeは何が違いますか?
Cherry-pickは特定のコミットだけを取り込みます。Mergeはブランチ全体の変更を取り込みます。
Cherry-pickすると元のコミットは削除されますか?
いいえ。元のコミットはそのまま残ります。Cherry-pickでは、現在のブランチに同じ内容の新しいコミットが作成されます。
複数のコミットをCherry-pickできますか?
はい。コミットIDを複数指定したり、コミット範囲を指定したりすることで、複数のコミットをまとめて取り込めます。
初心者でもCherry-pickを使う機会はありますか?
日常的に使う機会は多くありませんが、不具合修正やリリース作業では利用されることがあります。まずはMergeやPullなどの基本操作を理解してから学ぶと理解しやすくなります。
まとめ
Cherry-pickは、別のブランチから必要なコミットだけを選んで取り込める便利なGitコマンドです。
初心者は、「Mergeはブランチ全体」「Cherry-pickはコミット単位」「Rebaseは履歴を整理する」という違いを理解しておくことが大切です。特に緊急の不具合修正やリリース作業では活用されることが多いため、実務でも役立つ知識として覚えておきましょう。

コメント