2017-03-03 5 views
0

私はレポをフォークしていくつかの変更を加え、それを私のマスターブランチにプッシュしました。その後、私はフォークしたレポから変更を取り出し、それをマスターにマージしました。私は多くのマージ競合があります。私はそれらをすべて修正しましたが、コードのどこかで、私はimpの変更を見逃しました。私はその変更をプッシュしていないし、私はそれをコミットしていない。マージを元に戻すにはどうすればよいですか?私がフォークしたレポからのコミットには古いコミットがあり、レポには私の新しいコミットがあります。マージを元に戻すには?

答えて

1

質問を正しく読んだら、masterに何かをマージしましたが、何らかの問題があり、マージをキャンセルして再開したいと思っています。この場合、私はあなたが以下に逃げることができると思う:

git reset --hard HEAD 

あなたはまだ何もコミットしていないので、マージが持っている唯一の本当の効果は、あなたが直接ファイル、およびおそらくあなたのステージを働いていることですマージから「ダーティ」です。上記のコマンドは、作業およびステージングされたファイルを、マージを試みる前のHEADコミット時の状態にリセットします。しかし、あなたの支店の実際の歴史はまだ変わっていないので、あなたはその点では安全です。

あなたはを持っていた場合は、この状況に対処する方法を興味があればあなたがコミットダイレクトにgit rebaseを使用することができ、今ではマージの上にコミットおそらく他の仕事で、マージをコミット。 Considertheは図以下:ここ

... A --- B --- C --- F ... master 
    \    /
     --- D --- E ---  feature 

featureは、Aコミットmasterから分岐したが、その後Fをコミットマージでmasterにマージされました。これで、そのマージコミットを削除します。あなたは次のようにAをコミットするmasterをリベースすることができます

git rebase <SHA-1 of commit A> 

GitはAの上にmasterからすべてのコミットを再生します、しかし、それはFで起こっコミットマージを無視します。デフォルトの動作は、マージコミットを無視し、メインの親パスを後方に従うことです。したがって、これはこの状況を処理する1つの方法です。

+0

あなたはロックスターのTimです。詳細な説明をありがとう。私はたくさんのことを学んでいます – Raaz

関連する問題