マージコミットのcherry pick

こういうマージコミットをcherry pickする時の話

f:id:fuji-tak:20200229171211p:plain

普通にgit cherry-pickしてみます

$ git cherry-pick -n 1adf377

怒られます。マージコミットは親が2ついるので、どちらから辿ればいいのか分からない、ということみたいです。

error: commit 1adf3776d12499e29a896d11a4d03846e7fc3c54 is a merge but no -m option was given.
fatal: cherry-pick failed

-mに見て欲しい親のハッシュ(90a3900)を指定しましたが、

$ git cherry-pick -n -m 90a3900  1adf377

やっぱり怒られました。

error: option `mainline' expects a number greater than zero
usage: git cherry-pick [<options>] <commit-ish>...
   or: git cherry-pick <subcommand>
... 

調べたところ、親番号を教えないといけないみたいなので、git rev-parseで確認します。

$ git rev-parse 1adf377^1
90a3900fa17137dc88d0a4641e386e36763666f5

$ git rev-parse 1adf377^2
6d0fda8197e66cf3c6defa7ec616e61f12b37c13

今回は親番号が1の方を見てほしかったので、mオプションで指定します。

$ git cherry-pick -n -m 1 1adf377

これでうまくいきました。


参考

親番号の調べ方の情報元 stackoverflow.com