Gitを使って複数人で開発を進めていると、「他のブランチで行われた修正のうち、この1つのコミットだけを今のブランチに取り込みたい」という状況が必ず発生します。
ブランチ全体をマージ(git merge)してしまうと、まだリリースできない未完成の機能まで混ざってしまう——。そんな時に活躍するのが git cherry-pick(チェリーピック)コマンドです。
本記事では、cherry-pick の基本的な使い方から、実務で頻出する活用シーン、そしてコンフリクト(競合)が起きた時の安全な対処法までを解説します。
1. git cherry-pick の基本構文と動作
cherry-pick は、文字通り「つまみ食い」をするように、指定したコミットの「変更内容」だけを現在のブランチに新しいコミットとして適用するコマンドです。
# 現在のブランチに、指定したコミットIDの変更を取り込む
git cherry-pick [コミットID]実行例:別のブランチからバグ修正だけを取り込む
例えば、現在 main ブランチにいて、feature/login ブランチで行われたバグ修正(コミットID: a1b2c3d)だけを取り込みたいとします。
- まず、取り込みたいコミットのIDを調べます(
git logなどで確認)。 - 現在のブランチ(取り込み先)に移動します。
git checkout maincherry-pickを実行します。
git cherry-pick a1b2c3dこれだけで、a1b2c3d の変更内容が main ブランチに新しいコミットとして追加されます。この時、コミットメッセージや作成者情報は元のコミットから引き継がれますが、コミットIDは新しく生成される点に注意してください。
2. 実務での代表的な活用シーン
cherry-pick は、以下のような実務の場面で非常に重宝します。
シーン1:リリース直前に見つかった致命的なバグ修正
本番リリース用のブランチ(release)を準備している最中に、開発中のブランチ(develop)で重大なバグ修正が行われました。develop には他にも未完成の機能が含まれているため、マージはできません。
このような場合、develop ブランチの「バグ修正のコミット」だけを release ブランチに cherry-pick します。
シーン2:間違ったブランチにコミットしてしまった時のリカバリ
「本来は feature/A ブランチで作業するはずだったのに、誤って main ブランチにコミットしてしまった!」というミスはよくあります。
この場合、以下の手順でリカバリできます。
feature/Aブランチを作成し、移動する。
git checkout -b feature/A- 間違えたコミットを
mainブランチからcherry-pickして取り込む。
git cherry-pick [間違えたコミットID]mainブランチに戻り、間違えたコミットを打ち消す(git reset --hardやgit revertなど)。
シーン3:複数のコミットをまとめて取り込む
1つのコミットだけでなく、複数のコミットを順番に取り込むことも可能です。
# 複数のコミットをスペース区切りで指定(左から順に適用される)
git cherry-pick a1b2c3d e4f5g6h
# 範囲で指定(Aの次のコミットからBまで)
git cherry-pick A..B
# Aを含めてBまで指定
git cherry-pick A^..B3. コンフリクト(競合)が発生した時の対処法
cherry-pick を実行した際、取り込もうとしている変更箇所が、現在のブランチで既に別の修正を受けていた場合、コンフリクト(競合)が発生して処理が中断されます。
コンフリクトが起きた場合は、慌てずに以下の手順で解決します。
ステップ1:競合箇所を修正する
git status でコンフリクトが起きているファイルを確認し、エディタで開いて修正します(通常の merge 時のコンフリクト解消と同じです)。
# 競合ファイルの確認
git statusステップ2:修正したファイルをステージングする
修正が終わったら、git add でファイルをステージング(インデックスに登録)します。
git add [修正したファイル]ステップ3:cherry-pick を再開(–continue)する
コンフリクトが解消されたら、--continue オプションを付けて cherry-pick の処理を再開させます。
git cherry-pick --continueエディタが立ち上がり、コミットメッセージの確認・編集画面が表示されます。保存して閉じれば、cherry-pick 完了です。
(補足)cherry-pick を途中でやめる(–abort)
コンフリクトの解消が難しく、「やっぱり cherry-pick するのをやめたい」という場合は、--abort オプションを使用します。
git cherry-pick --abortこれを実行すると、cherry-pick を開始する前の状態(コンフリクトも起きていない状態)に安全に戻すことができます。
まとめ
git cherry-pick は、「この修正だけ欲しい!」というピンポイントな要望に応えてくれる強力なコマンドです。
- 基本:
git cherry-pick [コミットID]で、特定の変更だけを現在のブランチに取り込む。 - 活用: リリース前のバグ修正取り込みや、誤ったブランチへのコミットのリカバリに使う。
- 対処: コンフリクトが起きたら修正して
git add→git cherry-pick --continueで再開。やめる時は--abort。
マージやリベースと並んで、Gitを使ったチーム開発では必須のスキルですので、ぜひ使いこなせるようになってください。

コメント