第18回: cherry-pickの基本 — 別ブランチの変更を「必要なものだけ」持ってくる

章: 第6章: 現場で差がつく補助操作

ブランチ全体ではなく、特定のコミットだけ欲しいことがある

Gitでは通常、別ブランチの変更を取り込むときに mergerebase を使います。これはブランチ全体の流れを前提にした操作です。

しかし実務では、ときどきこういう場面があります。

  • バグ修正コミットだけを本番向けブランチへ入れたい
  • 先に別ブランチで直した1件だけを流用したい
  • 他の変更はまだ取り込みたくない

このときに使うのが cherry-pick です。

cherry-pick は、別の場所にある特定コミットだけを選んで現在のブランチへ取り込む操作です。

何が便利なのか

たとえば feature/a ブランチに、

  • まだ途中の機能追加
  • ただし1件だけ緊急バグ修正

が混ざっていたとします。

このとき、ブランチごと merge すると未完成機能まで入ってしまいます。

ですが cherry-pick なら、必要な修正コミットだけを選んで持ってこられます。


git switch main
git cherry-pick <コミットID>

これで、そのコミットの内容だけが現在のブランチへ反映されます。

どんな場面で使われるか

  • 緊急修正だけをリリースブランチへ反映したいとき
  • 他ブランチの有用な小修正を流用したいとき
  • 複数ブランチ運用で、同じ修正を選択的に反映したいとき

特に本番運用や保守フェーズでは、「全部は入れたくないが、この1件だけ必要」という状況が起こりやすいです。

注意したい点

cherry-pick は便利ですが、安易に多用すると「同じ修正が複数ブランチにどう入ったか」が追いづらくなることがあります。

そのため、

  • 本当に1コミット単位で持ってきたいのか
  • いずれ通常の merge や rebase で統合される予定があるのか

を考えて使う必要があります。

また、適用先でコンフリクトすることも普通にあります。便利な近道ですが、自動で全部きれいに済むわけではありません。

実務での考え方

向いている場面 向いていない場面
緊急修正を一部だけ反映したい ブランチ全体を正しく統合したい
小さな独立修正を流用したい 大量の関連変更をまとめて取り込みたい

cherry-pick は万能な統合手段ではなく、必要な変更をピンポイントで動かすための道具です。

チェックポイント: cherry-pick は「ブランチを取り込む」のではなく「コミットを選んで取り込む」操作です。この粒度の違いを意識しましょう。

まとめ & 次のステップ

  • cherry-pick は特定コミットだけを現在ブランチへ取り込む操作
  • 緊急修正や小さな流用で役立つ
  • ブランチ全体を統合したい場面には向かない
  • 便利だが多用すると履歴追跡が複雑になりやすい
  • コミット単位で必要な変更を動かす道具として使うとよい

次回は stash を扱います。 作業途中の変更をいったん退避したい場面は、実務ではかなり頻繁にあります。

Related Articles