[解決済み] Git チェリーピック構文とブランチのマージ
質問
私はあるブランチから別のブランチにチェリーピックをしようとしているのですが、それは簡単なはずなのに、マージであるというエラーが発生します。
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
error: Commit a8c5ad438f6173dc34f6ec45bddcef2ab23285e0 is a merge but no -m option was given.
fatal: cherry-pick failed
おかしいな......と思ったら、そのはず。
$ git cherry-pick a8c5ad438f6173dc34f6ec45bddcef2ab23285e0
いつから -m 機能を提供するようになったのですか?
どのように解決するのですか?
以下のものを用意する必要があります。
-m
コミットが
マージコミット
である場合、すなわち複数の親を持つコミットの場合です。
通常、どのような
git cherry-pick REV
が行うことは、次のように記述することができます。
-
の間の変化を取る。 rev とその親との間の変更を取る。
-
これらの変更を現在の HEAD に適用し、結果をコミットするには rev のコミットメッセージとともに結果をコミットします。
マージコミットは2つの開発ラインを結合します。たとえば、1 つの行はウィジェットを実装し、もう 1 つの行は雑然としたものを取り除きます。マージはウィジェットを含むコードを提供し、クラッタを取り除きます。
ここで、チェリーピック処理のステップ1を考えてみましょう。gitは、あなたが雑念を取り除きたいのか、ウィジェットを実装したいのかを推測することができません。なぜなら、両方を行う方法に関する情報は単一のマージコミット内に含まれておらず、マージされた結果のツリーのコンテンツのみが含まれているからです。
は
-m
オプションを使用すると、git にどのように処理を進めるかを指示することができます。たとえば、散らかったものを取り除くときに
master
で、マージコミットが
git merge WIDGET
で作成され、その後
git cherry-pick -m 1 merged-commit
は新しいウィジェットをチェリーピックします。なぜなら、マージされたツリーと親1(乱雑さを取り除く最後のコミット)の間の差分は、まさにウィジェットが追加されたものであるからです。一方
git cherry-pick -m 2 merge-commit
は乱雑さを削除します。なぜなら、親 2 (ウィジェット追加の最後のコミット) と
マージコミット
の間にある差分は、まさに雑多なものを削除するのに欠けているからです。
ウィジェット
ブランチに欠けている乱雑さを取り除くものです。
関連
-
Gitのエラーについて覚えておく-すべて最新にする
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] git rebase の取り消し
-
[解決済み] git add -A」と「git add .」の違い。
-
[解決済み] Git で、別のブランチの変更を選択的にマージしたり選択したりするにはどうすればよいですか?
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
Gitのエラーについて覚えておく-すべて最新にする
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] git cherry-pickが「...38c74dはマージされましたが、-mオプションは指定されませんでした」と言う。
-
git push please tell me who you are or git fatal: empty ident name (for <>) not llowed.
-
[解決済み] チェリーピックのコンフリクトを解決するにはどうしたらいいですか?
-
[解決済み] 新サーバーへのGitプッシュ/クローン
-
[解決済み] 対話式リベースを中断する方法(--abort が効かない場合)?
-
[解決済み] Git の 'master' ブランチを 'release' にリネームするには?
-
[解決済み] ファイル変更時のDockerコンテナの再構築