はじめに
コジマです。
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を学びたいエンジニアのためにおすすめのUdemy講座を紹介いたします!
Git初心者がまず学ぶならこれ!
Gitの仕組みから教えてくれるので、基本的なことを学びながら深い理解を得ることができます。
Git: もう怖くないGit!チーム開発で必要なGitを完全マスター
もっと実務的な知識を得たい人はこれ!
チーム開発の観点からもアプローチしていたり、間違えたときのリカバリ方法にも触れられています。
一つ上のレベルになりたいエンジニアは必見です。
Git・GitHub入門:GitとGitHubを基礎から完全マスター【2021最新版】【VSCode対応】
気になった人はぜひ見てみてくださいね!
以上、コジマでした。