cherry-pickとは何か?
cherry-pickは、特定の1つのコミットの変更をコピーし、現在のブランチ上に新しいコミットとして適用します。
cherry-pickを使うと、履歴のどこからでも単一のコミットを取り出し、今いる場所に再適用できます。ブランチ全体ではなく、たった1つの変更を別の場所に持っていく必要があるとき、たとえば古いリリースへ修正をbackportするときの定番ツールです。
What cherry-pick does
cherry-pickは、選んだコミットが導入したdiffを取り、現在のブランチに新しいハッシュを持つまったく新しいコミットとして適用します。元のコミットはそのままの場所に残ります。あなたはその効果を複製しているのであって、移動しているわけではありません。
Cherry-picking a commit
欲しいコミットを見つけ、それを今いるブランチに適用します。
Backporting a fix
git switch release/1.x
git cherry-pick a1b2c3dWhen to use it
cherry-pickは、バグ修正をメンテナンスブランチへbackportするとき、未完成のブランチから準備の整った1つの変更を取り出すとき、あるいはhotfixをバージョン間で適用するときに真価を発揮します。重複して見えるコミットを作り得るため、日常的な統合手段としてではなく、意図的に使うのが最善です。
Cherry-pick in CI/CD
リリースのメンテナンスでは、チームはしばしば検証済みの修正をmainからリリースブランチへcherry-pickし、無関係な変更を引きずり込まずにパッチで出荷できるようにします。その後、CIがリリースブランチ上でコピーされたコミットを検証し、そのコンテキストで修正が適用されテストに通ることを、出荷前に確認します。
Cherry-pick tips
- 単一の修正をリリースブランチへbackportするために使います。
- 新しいコミットハッシュを想定してください。変更は移動ではなくコピーされます。
- 移動先のブランチが大きく異なる場合は、コンフリクトを解決します。
- コピーされたコミットを、新しいブランチ上でCIに再検証させます。
重要なポイント
- cherry-pickは、1つのコミットの変更を現在のブランチにコピーします。
- 修正のbackportや単一変更の抽出に最適です。
- CIは、コピーされたコミットを移動先のブランチで再検証します。
関連ガイド
What Is a Hotfix Branch?What is a hotfix branch? Learn how a branch off production lets you patch a live bug fast, and how a streamli…
What Is a Release Branch?What is a release branch? An explainer on stabilizing a version on a dedicated branch, accepting only fixes,…
What Is a Commit SHA?What is a commit SHA? Learn how Git derives a unique hash for each commit, how short SHAs work, and why pinni…