cherry-pickコマンドを使った経緯
本番へのリリースにあたり、リリース用のブランチに変更をコミットしようとしたところ、
過去の改修が含まれていたことに気付き、「特定のコミットだけ反映したいな」と思って調べたのがきっかけです。
cherry-pickコマンドとは?
まさに上記ような状況にぴったりのコマンドで、他ブランチの特定コミットのみを反映されることができるコマンドです。
使い方
cherry-pick コミットID
でそのコミットを反映させることができます。
例 developブランチのコミットをstrawberryブランチにcherry-pickする場合
git.command
git checkout develop
git log
commit f77d749550d38df8b2a11cc3d5c16cd1f26fc025
staging環境ホスト名変更
commit 7c83ae675baf01ec71799c4cba7d06eb467a6bdd
パラメータ小文字化対応
commit 0794374042d3def3b5824bdb0be2b215d443b73b
文字列結合演算子の修正/stagingのhostをlocalに変更
commit 546de2cc727fcae02646c6af637f401e4238feef
リクエストにパラメータ追加
git checkout strawberry
git cherry-pick 546de2cc727fcae02646c6af637f401e4238feef
みたいな感じです。
実際使ってみてわかったこと
cherry-pickでまとめてコミットしてやったところ、コンフリクトがおきましてダメでした。
まとめてやる方法
git.command
git cherry-pick develop~8..develop
最新から過去にさかのぼり8番目までのコミットを反映されます。
で、結局やった方法は、ひとつずつcherry-pickし、コンフリクトが発生した場合は、コンフリクトを解決しコミットし、cherry-pickし・・・をしました。
ありがとうございました。
参考URL
git cherry-pick まとめめも
git cherry-pickで起きてしまったconflictの解消方法【--ours、--theirs】