Edited at

cherry-pickコマンド備忘録

More than 3 years have passed since last update.


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】