2017-05-01 7 views
2

の他の部分に影響を与えずマージそれは3週齢のコミットとたくさんのようにそれはある私にGitリポジトリ:私は(リバースコミット)戻したいコミットに行くときこの元に戻すアン旧コミット

error: commit X is a merge but no -m option was given.

を与えますそのマージの後に他の人々の他のものを押し込んだ。私は、矛盾のトンを引き起こすことなく、そのマージで行われた変更を削除したい。

私はそれをコミットする前に(コミットY)、これの後にすべてが消えてしまいます。私がそのようにプッシュすれば、誰かが存在するファイルで何かを変更した場合、そのコミットで(YではなくX)。

これを行うためのクリーンで、うまく簡単な方法はありますか?申し訳ありませんが、私は間違ったことを仮定している場合、私はgit初心者です。私は簡単に行ってください。

+0

マージ後にいくつのコミットが行われましたか?あなたはマージによってもたらされた変更を永遠に取り除きたいですか? –

+0

たくさん..そして、はい、私は一緒にそれらをすべて取り除きたいです。私はAndyのソリューションがうまくいくと思う。おかげでたくさん! – pdace

答えて

2

git resetを使用したくない場合は、既にプッシュされている履歴が書き換えられるためです。可能な限り避けるべきです。

エラーメッセージは、あなたがやりたい言っている:

git revert -m 1 <hash of the merge commit> 

注意したいかどうということ:-mオプションは、2つの親のあなたはそれが他を元に戻すことができるように残しておきたいコミットgitのを伝えますこのマージコミットからの変更を将来のある時点でマージするには、このコミット(つまり、変更を元に戻したコミット)を元に戻し、すべてを再度マージする必要があります。

ブログ投稿Undoing Mergesにはこれに関する詳細があり、私よりもよく説明されています。

+0

これは多くの助けになりました!ありがとう! – pdace

関連する問題