Sometimes you get in a situation--and this is a no-judgement zone, we've all been there--where you merge branches and you messed up and need to undo the merge because, well, because your co-workers are kind of mad you broke the project. Let's say that happened. How do you revert a merge?
Sometimes you get in a situation — and this is a no-judgement zone, we’ve all been there — where you merge branches and you messed up and need to undo the merge because, well, because your co-workers are kind of mad you broke the project.
Let’s say that happened. How do you revert a merge?
We have a my_feature_branch
that I’ve been working in. We also have a develop
branch that I merge into and deploy to my testing/staging server.
git checkout develop
git merge my_feature_branch
My merge of my_feature_branch
into develop
broke the site. I need to save myself from further embarrassment in front of my team, so let’s undo the merge into develop
.
Because the merge is a commit that points the HEAD to a specific commit, we can undo the merge commit and roll back to the pre-merge state.
To revert the previous commit (our merge commit), we do:
git revert HEAD
We can also specify the exact merge commit that we want to revert using the same revert
command but with a couple additional options.
git revert -m 1 dd8d6f587fa24327d5f5afd6fa8c3e604189c8d4>
We specify the merge using the SHA1 hash of the merge commit. The -m
followed by the 1
indicates that we want to keep the parent side of the merge (the branch we are merging into).
The outcome of this revert is that Git will create a new commit that rolls back the changes from the merge.
We are saved from embarrassment! The project is working again. Now back to work to figure out why that merge broke the commit.