Undo a git merge (hasn't been pushed yet)
I just committed some changes into one of my feature branches ("feedback_tab") then, checked out "master" and merged them in there. I actually meant to merge them into my "development" branch.
Now, master is ahead of 'origin/master' (its remote) by 17 commits - I haven't pushed 开发者_如何学JAVAthe merge up (and don't want to, obviously). How can I revert master back to the same state as before the accidental merge? I'm confused between git revert
and git reset
with this stuff.
I looked in my git log and there's no entry for merging feedback_tab into master. I'd have thought it would be the top entry?
Bit confused :/ any help welcome! max
To undo a merge that was NOT pushed:
git reset --merge ORIG_HEAD
If during the merge you get a conflict, the best way to undo the merge is:
git merge --abort
git reset --hard HEAD~17
takes you back 17 commits ahead of the head of master. git rebase -i HEAD~17
probably gets rid of the extra commits as well.
Taken from 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>
This one will surely work!
git reset --hard HEAD~1
git init
The first one will revert the changes you recently made (the merge) the second will init the repo to latest (therefore will fast forward to latest on origin)
I've tried
git reset --merge
but it didn't do the trick.
精彩评论