Ok, I'm fairly familiar with git, including git revert and git reset. I think that what I want to do can't be done, but just wanted to double-check.
Let's assume I have a repo into which a colleague has made dozens of bad merge commits. I want to reset the repo back to the last known good commit. I don't want to use a reset and have to do a force push, because that will mess up the local copy of all my other colleagues. I also don't think revert can very easily be used to undo dozens of merge commits.
My best idea is to clone a second copy of the repo, checkout the right commit, and then go to my original local copy, make a branch, delete every file, and copy everything from the second repo. Then commit, push, merge normally. Can I improve on this?