Undo git fast forward merge

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.

  • Git Merge --no-ff makes copy of commits
  • Git: Prevent commits in master branch
  • Can I make fast forwarding be off by default in git?
  • ! master -> master (non-fast-forward) on a new up-to-date branch
  • Git fast forward merge: Any chance to find the person to blame?
  • Why does git fast-forward merges by default?
  • Thanks for any help

  • Git flow branching for fixing a bug
  • Lost all commits when forced push in github
  • git error: RPC failed; curl 56 GnuTLS
  • Convert an SVN checkout to use git (git-svn)
  • Git rm several files?
  • How to revert changes due to a merge with Eclipse and EGit
  • 2 Solutions collect form web for “Undo git fast forward merge”

    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.

    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>
    
    Git Baby is a git and github fan, let's start git clone.