私は他の人と一緒にプロジェクトに取り組んでおり、複数の github フォークが作業されています。誰かが問題の修正を行ったので、私は彼のフォークをマージしましたが、その後、もっと良い解決策が見つかるかもしれないことに気付きました。今行ったコミットを元に戻したいです。これを試してみましたgit revert HEAD
が、次のエラーが発生しました:
致命的: コミット <SHA1> はマージですが、-m オプションが指定されていません。
それはどういう意味ですか? マージしてコミットしたときに、-m オプションを使用して「<ユーザー名> とマージされました」と表示しました。
ここで何が間違っているのでしょうか?
ベストアンサー1
デフォルトでは、git revert
マージ コミットを元に戻すことは拒否されます。これは、その実際の意味があいまいだからです。これはHEAD
実際にはマージ コミットであると推測します。
マージコミットを元に戻す場合は、どのマージの親をメイントランクとするか、つまり、何に戻すかを指定する必要があります。
多くの場合、これは親番号 1 になります。たとえば、 で を実行master
しgit merge unwanted
、その後 のマージを元に戻すことにした場合などですunwanted
。最初の親はマージ前のmaster
ブランチになり、2 番目の親は の先端になりますunwanted
。
この場合、次のようにすることができます。
git revert -m 1 HEAD
git cat-file -p [MERGE_COMMIT_ID]
親ブランチを順番に表示します。最初にリストされるのは -m 1、2 番目は -m 2 です。