I recently made a mistake with my git merge strategy, and didn't notice the result error(s) until I had already continued to work on the project and made more commits. For the sake of brevity, let's say I have two branches, hotfix
and new_feature
. I did something like the following:
git checkout new_feature
git commit -m "Commit to the feature branch"
git checkout hotfix
git pull origin new_feature # Uh oh, I pulled the wrong branch!
git commit -m "Commit to the hotfix"
git push origin hotfix # Uh Oh, pushed the bad merge!
After the events above, other developers also made commits to the Hotfix branch. Now, we have a hotfix we want to push out, but can't because it contains feature work that isn't complete.
I've seen a lot of similar questions about this situation, but none that match 100% (most of them involve undoing the commit directly after the bad pull, without pushing first. I've gone one step further, and really borked things.
Any step-by-step guides on how I can remedy this?
Thanks!
Edit: many other answers mention git reflog
, so here is a modified copy of mine. I've changed the hashes and branch names to match my example above.
aaaaaaa HEAD@{0}: checkout: moving from new_feature to hotfix
bbbbbbb HEAD@{1}: checkout: moving from hotfix to new_feature
aaaaaaa HEAD@{2}: commit: Added analytics tracking
ccccccc HEAD@{3}: commit (merge): Fixed a merge issue in compiled css # BAD MERGE?
ddddddd HEAD@{4}: checkout: moving from new_feature to hotfix
eeeeeee HEAD@{5}: commit: Finished updating the events for the header
ddddddd HEAD@{6}: checkout: moving from hotfix to new_feature
ddddddd HEAD@{7}: checkout: moving from new_feature to hotfix
In the reflog above, HEAD@{3}
looks to be the bad merge. I was on the hotfix
branch, and pulled in the new_feature
branch, which gave merge conflicts. I fixed them, and pushed. What would I do to fix this?