Skip to content

Commit

Permalink
bisect reset: Allow resetting to any commit, not just a branch
Browse files Browse the repository at this point in the history
‘git bisect reset’ accepts an optional argument specifying a branch to
check out after cleaning up the bisection state.  This lets you
specify an arbitrary commit.

In particular, this provides a way to clean the bisection state
without moving HEAD: ‘git bisect reset HEAD’.  This may be useful if
you are not interested in the state before you began a bisect,
especially if checking out the old commit would be expensive and
invalidate most of your compiled tree.

Clarify the ‘git bisect reset’ documentation to explain this optional
argument, which was previously mentioned only in the usage message.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Anders Kaseorg authored and Junio C Hamano committed Oct 14, 2009
1 parent 78d553b commit 6b87ce2
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
23 changes: 17 additions & 6 deletions Documentation/git-bisect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on the subcommand:
git bisect bad [<rev>]
git bisect good [<rev>...]
git bisect skip [(<rev>|<range>)...]
git bisect reset [<branch>]
git bisect reset [<commit>]
git bisect visualize
git bisect replay <logfile>
git bisect log
Expand Down Expand Up @@ -81,16 +81,27 @@ will have been left with the first bad kernel revision in "refs/bisect/bad".
Bisect reset
~~~~~~~~~~~~

To return to the original head after a bisect session, issue the
following command:
After a bisect session, to clean up the bisection state and return to
the original HEAD, issue the following command:

------------------------------------------------
$ git bisect reset
------------------------------------------------

This resets the tree to the original branch instead of being on the
bisection commit ("git bisect start" will also do that, as it resets
the bisection state).
By default, this will return your tree to the commit that was checked
out before `git bisect start`. (A new `git bisect start` will also do
that, as it cleans up the old bisection state.)

With an optional argument, you can return to a different commit
instead:

------------------------------------------------
$ git bisect reset <commit>
------------------------------------------------

For example, `git bisect reset HEAD` will leave you on the current
bisection commit and avoid switching commits at all, while `git bisect
reset bisect/bad` will check out the first bad revision.

Bisect visualize
~~~~~~~~~~~~~~~~
Expand Down
8 changes: 4 additions & 4 deletions git-bisect.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ git bisect skip [(<rev>|<range>)...]
mark <rev>... untestable revisions.
git bisect next
find next bisection to test and check it out.
git bisect reset [<branch>]
finish bisection search and go back to branch.
git bisect reset [<commit>]
finish bisection search and go back to commit.
git bisect visualize
show bisect status in gitk.
git bisect replay <logfile>
Expand Down Expand Up @@ -311,8 +311,8 @@ bisect_reset() {
}
case "$#" in
0) branch=$(cat "$GIT_DIR/BISECT_START") ;;
1) git show-ref --verify --quiet -- "refs/heads/$1" ||
die "$1 does not seem to be a valid branch"
1) git rev-parse --quiet --verify "$1^{commit}" > /dev/null ||
die "'$1' is not a valid commit"
branch="$1" ;;
*)
usage ;;
Expand Down

0 comments on commit 6b87ce2

Please sign in to comment.