作業ノート

様々なまとめ、雑感など

git cherry-pickでマージコミットを適用する

$ git cherry-pick -m 1 ec6a3c5

マージコミットは、そのコミットの親が複数(マージ元、マージ先)あるので、そのままでは適用できない。

適用するときにどちらの親を選ぶか、それを指定するのが-mオプション。親コミットを選択して、親コミットとマージコミットの差分を適用する。

-mオプションは数値を指定する。値は1から始まるが、その値はgit logMergeヘッダの表示順に対応する。

$ 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が常にマージ先のコミットを指すようだ。

参考