特定のコミットだけ取り込む- git cherry-pick
特定のコミットを現在のブランチに適用(チェリーピック)します。
概念図
構文
git cherry-pick <commit>使用例
特定のコミットを適用
git cherry-pick abc1234注意点
多くの場合 merge で代替できる
cherry-pick はコミットハッシュが変わる操作です。ブランチ運用を見直せば merge だけで済むことがほとんどです。詳しくは きれいな履歴にこだわりすぎない を参照してください。
元コミットとはハッシュが別になる
cherry-pick は元のコミットとは別の新しいコミットを作成するため、同じ変更内容でもコミットハッシュは異なります。そのため、後でブランチをマージする際にコンフリクトが発生する可能性があります。
頻繁に cherry-pick するならブランチ戦略を見直す
頻繁に cherry-pick を使う必要がある場合は、ブランチ戦略の見直しを検討しましょう。通常はリリースブランチや hotfix ブランチを設計し直した方が管理が楽になります。
-xオプションで出所を記録-xオプションを付けると、コミットメッセージに「(cherry picked from commit abc1234)」という行が追加され、どこから cherry-pick したかを後から追跡しやすくなります。チーム開発では付けておくのがおすすめです。コンフリクト時の対処
コンフリクトが発生したら
git statusで対象ファイルを確認し、手動で修正してgit addしてからgit cherry-pick --continueで続行します。諦める場合はgit cherry-pick --abortで元に戻せます。実務での使いどころ
hotfix の別ブランチへの反映や複数リリースブランチへの配布など、cherry-pick が活きる実践的なシナリオは、ガイド cherry-pick と rebase を実務で使いこなす を参照してください。
