git reflog show testBranch
should show the Fast-forward merge as last item ({0}
).
After making sure this is the case, checkout testBranch
and then just do
git reset --keep testBranch@{1}
to revert to the previous state.
Question
I have this situation : Working on some testBranch for some time and I wanted to sync with master so I did git checkout testBranch and git merge master/testBranch
So now my branch is synced with master but then I found out that I want to undo that merge and problem is that merge is done with fast forward and now my commit history is mixed with master commits and testBranch commits and I don't know how to revert to state before merge on my testBranch.
Thanks for any help
Solution
git reflog show testBranch
should show the Fast-forward merge as last item ({0}
).
After making sure this is the case, checkout testBranch
and then just do
git reset --keep testBranch@{1}
to revert to the previous state.
OTHER TIPS
If you know of a revision in which you want your local testBranch, it is as simple as:
git checkout testBranch
git reset --hard <revision>
If you have changes mixed in like (oldest on top):
<point>
<your_change_a>
<change_from_someone_else>
<your_change_b>
<testBranch>
You could:
git checkout testBranch
git reset --hard <point>
git cherry-pick <your_change_a>
git cherry-pick <your_change_b>