開発中に、別のブランチで行われた特定のバグ修正や機能追加コミットだけを、現在のブランチに取り込みたいことがあります。そのような場合に役立つのが git cherry-pick コマンドです。
1. 基本的な使い方
取り込みたいコミットのハッシュ値を指定して実行します。ハッシュ値は git log などで確認できます。
# 特定のコミットを取り込む
git cherry-pick <commit-hash>
複数のコミットを順番に取り込みたい場合は、スペース区切りで並べるか、範囲指定が可能です。
# 複数のコミットを取り込む
git cherry-pick <commit-A> <commit-B>
# AからBまでのコミット(Aは含まない)を取り込む
git cherry-pick <commit-A>..<commit-B>
2. 競合(コンフリクト)が発生した場合
cherry-pickした変更が現在のブランチのファイルと衝突すると、競合が発生します。その場合は以下の手順で解決します。
- 競合が発生したファイルを手動で修正します。
- 修正したファイルをステージングエリアに追加します:
git add <file> - cherry-pickプロセスを続行します:
git cherry-pick --continue
途中でcherry-pickを取り消して元の状態に戻したい場合は、
git cherry-pick --abortを実行します。
3. まとめ
git cherry-pick は強力ですが、多用すると歴史(履歴)が複雑になり、後のマージでコンフリクトを引き起こす原因になることがあります。原則として、ホットフィックスの適用など必要な場面に限定して使用することが推奨されます。