Git merge, then revert, then revert the revert

So we’ve gotten a git branch into a tricky state:

Two branches:

  • Lost all the files in my git repo, reset didn't work. What happened?
  • Git - list all authors of a folder of files?
  • Jenkins Github Plugin - Triggering a Parameterized Build
  • how to pull from remote git repository and override the changes in my local repository
  • Cygwin ssh key added, but Git permission denied (publickey)
  • Git - Creating a .gitignore file
  • * master
    * other_branch
    

    Last week someone accidentally merged other_branch (prematurely) onto master and pushed to origin. We noticed the error and I, in my naivete, committed

    git revert bad_merge_commit
    

    to "fix" the problem. Everything looked ok, we moved on with our lives...

    Today we attempted to merge master into other_branch as a step towards bringing other_branch into master. But my revert seems to have caused a nightmare. When master merges into other_branch, all (most?) of the work on other_branch is deleted. I presume this is because my revert instructs all the older commits to be reverted.

    There are of course now many days' worth of commits on master on top of my revert, so untangling this looks like it may be difficult.

    Is there some way to repair the damage? Can I perhaps reach in with some rebasing argument and delete the two offending commits?

    Many thanks!

    [Update - adding detail of current state as requested]

    other_branch was branched off of master quite some time ago. Our standard practice is to merge master repeatedly into other_branch as we go to minimize buildup of conflicts (sometimes we rebase, but not in this case).

    master commits A | B | C | BAD_MERGE [other_branch_@S] | REVERT_OF_BAD | D | E | F ... HEAD

    other_branch commits P | Q | R | S [BAD_MERGE_FROM_HERE] | T | U | V ... HEAD

    Attempt to merge master HEAD to other_branch HEAD causes problem.

    Charles, I'm currently attempting a fix on a duplicate of master using the solution you suggested here: How to remove selected commit log entries from a Git repository while keeping their changes?.

    [/Update]

  • Why does git think each line of an untouched file has changed
  • Prune binary data from a git repository after the fact
  • PyCharm, git: Cannot Pull after remote repo name changing
  • npm package from private github repo, install vs update (package.json)
  • Git Bash gets stuck on diff / log, spontaneously repeats same command over and over
  • Push Git branches directly into a live server directory so files are seen live
  • One Solution collect form web for “Git merge, then revert, then revert the revert”

    Yes, the problem is that the revert undid the changes introduced by the merge, but not merge itself. I think the addendum section of https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html describes a possible solution.

    This document is also part of Git, under Debian you will find it at /usr/share/doc/git-doc/howto/revert-a-faulty-merge.txt

    Git Baby is a git and github fan, let's start git clone.