git revert が -m オプションがないとエラーを出すのはなぜですか? 質問する

git revert が -m オプションがないとエラーを出すのはなぜですか? 質問する

私は他の人と一緒にプロジェクトに取り組んでおり、複数の github フォークが作業されています。誰かが問題の修正を行ったので、私は彼のフォークをマージしましたが、その後、もっと良い解決策が見つかるかもしれないことに気付きました。今行ったコミットを元に戻したいです。これを試してみましたgit revert HEADが、次のエラーが発生しました:

致命的: コミット <SHA1> はマージですが、-m オプションが指定されていません。

それはどういう意味ですか? マージしてコミットしたときに、-m オプションを使用して「<ユーザー名> とマージされました」と表示しました。

ここで何が間違っているのでしょうか?

ベストアンサー1

デフォルトでは、git revertマージ コミットを元に戻すことは拒否されます。これは、その実際の意味があいまいだからです。これはHEAD実際にはマージ コミットであると推測します。

マージコミットを元に戻す場合は、どのマージの親をメイントランクとするか、つまり、何に戻すかを指定する必要があります。

多くの場合、これは親番号 1 になります。たとえば、 で を実行mastergit merge unwanted、その後 のマージを元に戻すことにした場合などですunwanted。最初の親はマージ前のmasterブランチになり、2 番目の親は の先端になりますunwanted

この場合、次のようにすることができます。

git revert -m 1 HEAD

git cat-file -p [MERGE_COMMIT_ID]親ブランチを順番に表示します。最初にリストされるのは -m 1、2 番目は -m 2 です。

おすすめ記事