<p>I have committed, and pushed, several patches:
A1-->A2-->A3-->A4 (HEAD)</p>

<p>Everyone's pulled these changesets into their local copy.</p>

<p>Now we want to "roll back" to A2, and continue developing from there - essentially throwing away A3 and A4. What's the best way to do this?</p>

You want
```
git-revert
```
and
```
git-reset
```
depending on how you want to treat A3 and A4. To remove all trace of A3 and A4, use
```
git-reset --hard
```
.
To keep A3 and A4 and record the fact you are reverting, use
```
git-revert
```
.
edit
: Aristotle Pagaltzis's
```
git-checkout
```
solution is superior, though for small reverts I don't see a problem with
```
git-revert
```
. None the less, I ask future upvotes be given to
Aristotle Pagaltzis's answer
I found
git magic
to be a good resource for git.