git cherry-pickでマージコミットを適用する
$ git cherry-pick -m 1 ec6a3c5
マージコミットは、そのコミットの親が複数(マージ元、マージ先)あるので、そのままでは適用できない。
適用するときにどちらの親を選ぶか、それを指定するのが-m
オプション。親コミットを選択して、親コミットとマージコミットの差分を適用する。
-m
オプションは数値を指定する。値は1から始まるが、その値はgit log
のMerge
ヘッダの表示順に対応する。
$ git log
commit ec6a3c551158b84a9e566e743a03beab73878c4d
Merge: c8d2a5a b350a80
Author: te2u <te2u@MacBookPro12m.local>
Date: Sat Nov 2 12:22:22 2013 +0900
Merge branch 'foo'
commit b350a806b5b4aa827d19be6645a95735c6d6c749
Author: te2u <te2u@MacBookPro12m.local>
Date: Sat Nov 2 12:22:11 2013 +0900
foo
commit c8d2a5aade623ad7e7cd36cc2dd85bbbd8514165
Author: te2u <te2u@MacBookPro12m.local>
Date: Sat Nov 2 12:21:49 2013 +0900
master
-m 1
とすると、コミットc8d2a5a
(マージ先)を選択する。
-m 2
とすると、コミットb350a80
(マージ元)を選択する。ただ、マージ元コミットとマージコミットには差分がないので、実質適用されない。
また今までの経験からして、1が常にマージ先のコミットを指すようだ。