web-dev-qa-db-ja.com

Gitマージを元に戻します(まだプッシュされていません)

機能ブランチの1つ(「feedback_tab」)にいくつかの変更をコミットし、「master」をチェックアウトしてそこにマージしました。実際、それらを「開発」ブランチにマージするつもりでした。

今、マスターは17のコミットで「Origin/master」(そのリモート)よりも先にあります。マスターを誤ってマージする前と同じ状態に戻すにはどうすればよいですか?私はgit revertおよびgit resetこのようなもの。

Gitログを調べましたが、feedback_tabをmasterにマージするためのエントリがありません。私はそれがトップエントリーになると思っていただろうか?

少し混乱しています:/どんな助けも歓迎します!最大

40
Max Williams

git reset --hard HEAD~17は、マスターのヘッドより17コミット先に戻ります。 git rebase -i HEAD~17は、おそらく余分なコミットも削除します。

35
Tamás

プッシュされなかったマージを取り消すには:

git reset --merge ORIG_HEAD

マージ中に競合が発生した場合、マージを取り消す最善の方法は次のとおりです。

git merge --abort
64
Hemerson Varela

git reset から取得

Undo a merge or pull

    $ git pull                         <1>
    Auto-merging nitfol
    CONFLICT (content): Merge conflict in nitfol
    Automatic merge failed; fix conflicts and then commit the result.
    $ git reset --hard                 <2>
    $ git pull . topic/branch          <3>
    Updating from 41223... to 13134...
    Fast-forward
    $ git reset --hard ORIG_HEAD       <4>
12
Amir Raminfar

これは確実に機能します!

git reset --hard HEAD~1 
git init

最初のものは最近行った変更を元に戻し(マージ)、2番目はリポジトリを最新に初期化します(したがって、Originで最新のものに早送りします)

私はもう試した

git reset --merge

しかし、それはトリックをしませんでした。

4
Alon Kogan