Git Cherry-Pick で特定のコミットを適用する
git cherry-pick を使って特定のコミットを別のブランチに適用する方法を解説。ブランチ全体を merge せずに個別の変更だけをコピーできます。
git cherry-pick <commit-hash>詳細な説明
git cherry-pick は何をするのか?
git cherry-pick は、単一のコミット(ハッシュで指定)を取得し、現在のブランチに新しいコミットとして適用します。元のコミットはソースブランチにそのまま残ります。ブランチ全体を取り込まずに、特定の変更だけが必要な場合に便利です。
仕組み
- Git が対象コミットによって導入された差分を読み取る。
- Git がその差分を現在の作業ツリーに適用する。
- パッチがクリーンに適用されれば、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 せずにその修正だけを本番リリースブランチに適用する必要がある場合に使用します。