A small git trick I just learned:
To undo a single bad commit "git revert" is great.
But it is tedious to do this for many.
For that the best is:
git diff HEAD {last-good-id} | git apply
Before doing this check the logs of all commits which will be undone, with:
git log {last-good-id}..
Hope this helps someone else.