2017-11-06 11 views
2

私たちは、このgitのログがあります。Git:マージと2つの隣接するコミットを元に戻すにはどうすればいいですか?

D:\blah>git log -n 5 --oneline  
fc19dec My change #2 
68fa9db Merge branch 
4bc1ac7 My change #1 
ec345d9 [maven-release-plugin] prepare for next development iteration 

を私はec345d9に戻りたいのですが、エラーを取得しています:

D:\blah>git revert --no-commit ec345d9..HEAD 
error: a cherry-pick or revert is already in progress 
hint: try "git cherry-pick (--continue | --quit | --abort)" 
fatal: revert failed 

私はこの復帰の方法を行うことができますか?

私はissueを認識しており、マージを元に戻し、-mオプションを指定する必要があります。私が過去にそれを使用したとき、私はただ1つのマージコミットを元に戻しています。しかし、この場合、マージコミットは、私が元に戻そうとしている他の2つのコミットの間に挟まれています。

+0

あなたが放棄しているチェリーピックを中止しようとしましたか? –

+0

元に戻してもよろしいですか? ec345d9の後にコミットする必要がないので、チェックアウトやマスターの移動は簡単ではないでしょうか? "revert"は、リルートされたコミットとは反対の新しいコミットを作成します。_forward_を古い状態にロールバックします。 checkout/branch -d master/branch master(またはあなたが使用しているブランチ)はブランチを目的のコミットに_ロールバックし、他のコミットをダングリングさせます。彼らはあなたが次回にあなたが去った時に去るでしょう。 –

答えて

2

最初に、-m 1(または他のメインライン番号)オプションを指定すると、マージにそのコミットの変更が含まれていないことを確認してください。

(まあ、最初まず、仕上げやチェリーピックを中止するか、あなたが今の真ん中にいる元に戻すには、その後、マージは、それらのコミット変化のうちの1つを含むかどうかを確認します。)

を今でまず、最も最近のあなたは元に戻すコミットしている確信している、そしてそのものは-mオプションを必要としているものが-mオプションを使用してないを必要とし、それらを一つずつ実行します。

git revert fc19dec 
git revert -m 1 68fa9db 
git revert 4bc1ac7 

例えば。これにより、3つの別々の新しいコミットが作成され、それぞれが1つの復帰を行うことに注意してください。 (これは、..の表記でも得られます。)1回の大きな復帰コミットを取得する場合は、毎回git revert -nを使用し、一度実行すると最終結果を別途コミットします。

+0

結局のところ、マージを元に戻す必要がないことに気がついたので、最初と3回目の復帰を行い、正常に機能しました。ありがとう。 –

関連する問題