web-dev-qa-db-ja.com

チェリーピックで-mオプションが指定されていないとエラーが表示される

2つのブランチマスターと開発者がいます

マスターブランチの開発ブランチからコミットIDを取得する必要があるので、チェリーピックで実行しますが、エラーが表示されます

$> git cherry-pick cf0d52b

error: Commit cf0d52b900f990300c3aa17936ddbae1476d461a is a merge but no -m option was given.
fatal: cherry-pick failed

このエラーは発生していません。このエラーが発生する理由と、これを取り除く方法はありますか。

18
Akash Jain

マージをcherry-pickしようとしています。マージは、いくつかの親から構築されます。マージには親IDを指定する必要があります。

次のいずれかを指定する必要があります。

-m parent-number/--mainline parent-number

マージのどちら側をメインラインと見なすべきかわからないため、通常はマージをチェリーピックすることはできません。

このオプションは、メインラインの親番号(1から開始)を指定し、cherry-pickが指定した親に関連する変更を再生できるようにします。


コミットの親は何ですか?

git showコマンドを使用してコミットの親を表示し、親のインデックスまたはSHA-1を選択できます

enter image description here

18
CodeWizard

このオプションは、親番号(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_が参照している)ことです。

5
VonC

エラーが示唆するように。あなたはマージコミットを選択しようとするので、ターゲットに適用される差分を生成する親に対してgitに指示します。

1
Vampire