Posted on 2024-09-06 by Matt.
git bisect
docs or git bisect --help
git bisect
does a binary search from a commit known to be good to a commit known to be bad, finding the first commit that contains the bug.
Begin bisect process.
$ git bisect start
status: waiting for both good and bad commits
Specify that the currently checked out commit (HEAD
) has the bug, and that 7e01f02
is an ealier commit that did not contain the bug.
$ git bisect bad
status: waiting for good commit(s), bad commit known
$ git bisect good 7e01f02
Bisecting: ...
You can specify a branch or a tag instead.
# the latest commit on branch develop is good
$ git bisect good develop
# version 3.1.0 is good
$ git bisect good 3.1.0
Mark a commit as good or bad as the process goes along
$ git bisect good
$ git bisect bad
Skip over the current commit (e.g. it doesn't compile)
$ git bisect skip
When you are finished, return back to the commit you had checked out when starting the bisect
$ git bisect reset
Automate the check.
Git will run check.sh
after checking out each commit.
0
, the commit will be marked good
1
, the commit will be marked bad
125
, the commit will be skipped$ git bisect run check.sh