git bisect — binary search for regressions
When something broke "sometime in the last 200 commits," bisect finds the culprit in about 8 steps.
git bisect start
git bisect bad # current is broken
git bisect good v1.4.0 # this tag worked
# test, then mark each checkout good/bad until git names the commit
Bonus: git bisect run ./test.sh automates the whole thing while you get coffee.