How to revert multiple commits as part of a single commit

git, revert

Solution

You can do:

git revert abcd123
git revert --no-commit wxyz789
git commit --amend

... and then write an appropriate commit message describing the combined effect of reverting both commits.

Problem

This is not a major problem, just something I want to know whether or not is possible. Let's say we have two commits, `abcd123` and `wxyz789`, that occur at non-adjacent, separate places, far back in a repo's history. Now let's say we want to revert them. Doing ``` git revert abcd123 wxyz789 ``` would result in two separate commits, one reverting `abcd123` and the other reverting `wxyz789`. This is all fine and well, but what if the mistakes we want to fix in the two commits are logically linked, and for the purposes of self-documentation we'd like to make one single commit containing one single "I broke something so now I'm reverting files x, y and z" comment? Is there a git command that does this? (I am of course aware that it is possible to create a commit where I just manually fix all the changes and then push. This is painful for all the obbious reasons.)

Original source

Related problems