Undoing a Git Merge
Most companies try to stay ahead of the curve when it comes to visual design, but for Planetaria we needed to create a brand that would still inspire us 100 years from now when humanity has spread across our entire solar system.
I recently needed to merge several topic branches into a client's staging branch, starting the process apparently before I drank enough morning coffee and wound up with a pretty nasty set of merge conflicts. The conflicts came about because I merged the branches in an improper order, starting by merging a branch which was based off the other branch that additionally required merging, winding up with a mess that looked like this:
$ git merge add_client_comments_83612372
Auto-merging db/schema.rb
CONFLICT (content): Merge conflict in db/schema.rb
Auto-merging app/views/specifications/show.html.erb
CONFLICT (content): Merge conflict in app/views/specifications/show.html.erb
Fortunately, undoing a Git merge containing conflicts you’d rather avoid is pretty easy. Begin by reviewing your recent commits:
$ git log --oneline -n3
6c1557d Merged branch add_comments_83612372
0fd0892 Merge branch 'editable_82327726' into staging
c07eca0 finish with edits to top nav
I want to revert back to the commit associated with 0fd0892
, and so I'll next execute reset
, identifying the commit SHA:
$ git reset --hard c07eca0
HEAD is now at c07eca0 finish with edits to top nav
With that done, I can begin the merge process anew.
The bottom line on this matter is that Git can be a bit scary at times, however when circumstances such as the above arise it's a certainty you'll be able to deal with them in a sane fashion; just be sure to do a bit of homework before executing any commands which deal with effectively destroying uncommitted data, because once that data is gone it is gone forever (or until you rewrite the code)!