NAME
----
-git-bisect - Find the change that introduced a bug
+git-bisect - Find the change that introduced a bug by binary search
SYNOPSIS
--------
-'git bisect' start
-'git bisect' bad <rev>
-'git bisect' good <rev>
-'git bisect' reset [<branch>]
-'git bisect' visualize
-'git bisect' replay <logfile>
-'git bisect' log
+'git bisect' <subcommand> <options>
DESCRIPTION
-----------
+The command takes various subcommands, and different options
+depending on the subcommand:
+
+ git bisect start [<paths>...]
+ git bisect bad <rev>
+ git bisect good <rev>
+ git bisect reset [<branch>]
+ git bisect visualize
+ git bisect replay <logfile>
+ git bisect log
+
This command uses 'git-rev-list --bisect' option to help drive
the binary search process to find which change introduced a bug,
given an old "good" commit object name and a later "bad" commit
The way you use it is:
------------------------------------------------
-git bisect start
-git bisect bad # Current version is bad
-git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
- # tested that was good
+$ git bisect start
+$ git bisect bad # Current version is bad
+$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
+ # tested that was good
------------------------------------------------
When you give at least one bad and one good versions, it will
it. Now, let's say that this booted kernel works fine, then just do
------------------------------------------------
-git bisect good # this one is good
+$ git bisect good # this one is good
------------------------------------------------
which will now say
Oh, and then after you want to reset to the original head, do a
------------------------------------------------
-git bisect reset
+$ git bisect reset
------------------------------------------------
to get back to the master branch, instead of being in one of the bisection
During the bisection process, you can say
- git bisect visualize
+------------
+$ git bisect visualize
+------------
to see the currently remaining suspects in `gitk`.
-The good/bad you told the command is logged, and `git bisect
+The good/bad input is logged, and `git bisect
log` shows what you have done so far. You can truncate its
output somewhere and save it in a file, and run
- git bisect replay that-file
+------------
+$ git bisect replay that-file
+------------
if you find later you made a mistake telling good/bad about a
revision.
+If in a middle of bisect session, you know what the bisect
+suggested to try next is not a good one to test (e.g. the change
+the commit introduces is known not to work in your environment
+and you know it does not have anything to do with the bug you
+are chasing), you may want to find a near-by commit and try that
+instead. It goes something like this:
+
+------------
+$ git bisect good/bad # previous round was good/bad.
+Bisecting: 337 revisions left to test after this
+$ git bisect visualize # oops, that is uninteresting.
+$ git reset --hard HEAD~3 # try 3 revs before what
+ # was suggested
+------------
+
+Then compile and test the one you chose to try. After that,
+tell bisect what the result was as usual.
+
+You can further cut down the number of trials if you know what
+part of the tree is involved in the problem you are tracking
+down, by giving paths parameters when you say `bisect start`,
+like this:
+
+------------
+$ git bisect start arch/i386 include/asm-i386
+------------
+
Author
------