Imagine the following scenario:
Code that shouldn't have been merged to the integration branch needs to be reverted. However, you can't just reset, since other commits have happened since then. Further, you may want to re-apply that commit at a later time.
It's easy enough to use git revert to apply a reverse commit. However, what happens when we want to commit that change (from a feature branch, for instance)? Do you just re-merge the branch? Will that work, since technically the code has already been merged?
What do you do when you are finally ready to accept that merge?