【Git】error: commit [Hash] is a merge but no -m option was given. と出た時の対処法【cherry-pick】

  • 2020.08.11
  • git
【Git】error: commit [Hash] is a merge but no -m option was given. と出た時の対処法【cherry-pick】

はじめに

コジマです。

git cherry-pickしたときに
「error: commit [Hash] is a merge but no -m option was given. 」

と出た時の対処法をまとめます。

上記のエラーは
merge commitをcherry-pickしようとすると発生します。

エラーに対処するためには、「-m」のオプションを付加して以下のようにすれば良いです。

git cherry-pick -m 1 [hash]

補足

こういう時は公式ドキュメントを見るべしです。

-m parent-number
--mainline parent-number
Usually you cannot cherry-pick a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of the mainline and allows cherry-pick to replay the change relative to the specified parent.

超意訳(なんとなくわかればええねんの精神)

マージコミットはどっちを取り込めばいいかわからないからcherry-pickできないよ。mオプションに親番号(1からはじまるよ)つけてくれたらチェリピできるよ。

親番号というのはgit logでマージコミットを見つけた時の「Merge:」で始まる行のコミット番号になります。
左から1、2と数えます。(もっと増える場合もあるかも)

commit 22d5510d77853765363f9eadc7a1f89b45e00bf6
Merge: daed0d7 d84f994
Author: コジマ <kojima@kojima.com>
Date:   Wed Aug 5 20:05:12 2020 +0900

    Merge pull request #87 feature/test1 into develop

大体の場合は親番号1でよいかとは思いますが、このことがなんとなく頭に入っていると作業の質が上がりますよ。

さいごに

参考記事は以下です。

Gitに error: commit ハッシュ is a merge but no -m option was given. と怒られて知った マージをチェリーピックする方法

git cherry-pick の基本仕様と、主要なオプション

公式ドキュメント
https://git-scm.com/docs/git-cherry-pick

何番煎じな記事かもしれませんが、公式ドキュメントと絡めた自分のノウハウとして残しておきたかったので書くことにしました。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


gitカテゴリの最新記事