git bisect is the command everyone should learn. With a single command (such as a test you just wrote) you can have git do a binary search across any number of commits and find exactly when the bug occurred.
git bisect and got blame are underrated tools, that in my opinion get lost in the conversation about should-you-squash-or-not. They really have diminishing returns when you start squashing huge feature branches into a single commit.