I occasionally use git bisect
to figure out where I’ve introduced test failures. If you’re not familiar, given known good and bad commits, along with a test command, git bisect
does a binary search over your repo to determine where a bug or test failure was introduced. This is especially useful on large repos with a test suite that takes a minute or two (or more ?) to run.
Most of the time, I just need to check the last handful of commits. To that end, I’ve written a bash function that assumes the current HEAD
is bad, 10 commits prior is good, and automatically runs a test command that you define.
gbi() {
git bisect start
git bisect bad
git checkout HEAD~10
git bisect good
git bisect run "$@"
}
This won’t cover every case, but should help automate this fairly verbose process most of the time.