2つのブランチマスターと開発者がいます
マスターブランチの開発ブランチからコミットIDを取得する必要があるので、チェリーピックで実行しますが、エラーが表示されます
$> git cherry-pick cf0d52b
error: Commit cf0d52b900f990300c3aa17936ddbae1476d461a is a merge but no -m option was given.
fatal: cherry-pick failed
このエラーは発生していません。このエラーが発生する理由と、これを取り除く方法はありますか。
マージをcherry-pick
しようとしています。マージは、いくつかの親から構築されます。マージには親IDを指定する必要があります。
次のいずれかを指定する必要があります。
-m parent-number
/--mainline parent-number
マージのどちら側をメインラインと見なすべきかわからないため、通常はマージをチェリーピックすることはできません。
このオプションは、メインラインの親番号(1から開始)を指定し、cherry-pickが指定した親に関連する変更を再生できるようにします。
git show
コマンドを使用してコミットの親を表示し、親のインデックスまたはSHA-1を選択できます
このオプションは、親番号(1から始まる)を指定します
Git 2.13(2017年第2四半期)までは、その数は0でした! (不正解です)
Jmit King(peff
) による commit b16a991 (2017年3月15日)を参照してください。
( Junio C Hamano-gitster
- によってマージ commit 9c96637 、2017年3月17日)
_
cherry-pick
_:_--mainline
_への偽の引数を検出Cherry-pickコマンドとrevertコマンドは、
OPT_INTEGER()
を使用して_--mainline
_を解析します。ストックパーサーは、非数値のナンセンスを拒否するのに十分スマートですが、親のカウントが1から始まることを認識していません。さらに悪いことに、値「0」は未設定の場合と区別がつかないため、カウントが0ベースであると想定しているユーザーは混乱するメッセージを受け取ります。
_$ git cherry-pick -m 0 $merge error: commit ... is a merge but no -m option was given.
_正しい診断は、 "_
-m 0
_"が最初の親を参照していない( "_-m 1
_が参照している)ことです。
エラーが示唆するように。あなたはマージコミットを選択しようとするので、ターゲットに適用される差分を生成する親に対してgitに指示します。