Git Cherry-Pick で特定のコミットを適用する

git cherry-pick を使って特定のコミットを別のブランチに適用する方法を解説。ブランチ全体を merge せずに個別の変更だけをコピーできます。

git cherry-pick <commit-hash>

詳細な説明

git cherry-pick は何をするのか?

git cherry-pick は、単一のコミット(ハッシュで指定)を取得し、現在のブランチに新しいコミットとして適用します。元のコミットはソースブランチにそのまま残ります。ブランチ全体を取り込まずに、特定の変更だけが必要な場合に便利です。

仕組み

  1. Git が対象コミットによって導入された差分を読み取る。
  2. Git がその差分を現在の作業ツリーに適用する。
  3. パッチがクリーンに適用されれば、Git は同じメッセージで異なるハッシュの新しいコミットを作成する。

具体的な手順

# 目的のコミットハッシュを確認する
git log --oneline feature/payments
# 出力例: a1b2c3d Fix currency rounding bug

# 修正が必要なブランチに切り替える
git checkout main

# コミットを cherry-pick する
git cherry-pick a1b2c3d

複数のコミットを cherry-pick する

コミットの範囲を指定して cherry-pick できます:

git cherry-pick a1b2c3d..f4e5d6a

または個別に複数のコミットを指定:

git cherry-pick a1b2c3d f4e5d6a 7g8h9i0

コンフリクトの対処

cherry-pick したコミットが現在のブランチとコンフリクトした場合、Git は一時停止して手動での解決を求めます。解決後:

git add .
git cherry-pick --continue

操作全体を中止するには git cherry-pick --abort を実行します。

Cherry-Pick を避けるべきとき

cherry-pick はコミットを複製するため、ソースブランチが後で merge される場合に混乱を招く可能性があります。控えめに使いましょう。ブランチの全変更が必要な場合は merge や rebase を優先してください。cherry-pick はホットフィックスや対象を絞ったバックポートに最適です。

ユースケース

開発ブランチで重要なバグ修正がコミットされ、チームは未完成の機能を merge せずにその修正だけを本番リリースブランチに適用する必要がある場合に使用します。

Try It — Git Command Builder

フルツールを開く