Reputation: 163
I've been making changes in a local branch branch_a. I thought these changes would need to be merged into the master, so I merged into my local master. I then carried on working in branch_a, occasionally pulling into my local master the most recent updates from other ppl and then merging those into branch_a.
Now it turns out they don't want those changes from branch_a in master. How do I revert my master back to it's original state a couple of months ago (my result of the merge from branch_a are committed but not pushed). I can't reset can I because my local branch branch_a is dependent due to the merging from master (although I only want the changes from the remote master branch, I've not really much anything in my local master - nothing I want to keep anyway - it's just stuff after I merged the other branch in to get it working nice). Can I rebase branch_a to remove the dependency on my local master branch, then reset? Or should I use revert so the history is not deleted? (Basically I don't want master to get messy with my local merging and tiny fixes I did after the merge).
Upvotes: 1
Views: 176
Reputation: 133238
You can do this in a number of different ways. Of course you can reset your master branch. To get rid of your merged branch_a into master you could:
git fetch origin
git checkout master
git reset --hard origin/master
Since you havent pushed your merged branch_a changes this will make your master point to current remote master which will be stripped of changes from branch_a.
Now, assuming you want to keep branch_a but without the merged changes from master, you can rebase that branch interactively and simply delete the merge commits.
git checkout branch_a
git rebase -i HEAD~20 (assuming 20 commits back in history)
This will start up an editor where you can do various things and will look something like this:
pick 23kasjd foo
pick sjd3456 goo
Simply remove the lines that are merge commits coming from master and save. The rebase will continue and branch_a history will be rewritten and omit these commits from the history.
Upvotes: 1