Shijing Lv's answer mentions:
If git bisect reset
does not work for you, just remove the bisect file: ...
But that should now be supported natively, since Git 2.44 (Q1 2024), "git bisect reset
"(man) has been taught to clean up state files and refs, even when BISECT_START
file is gone.
See commit daaa03e (07 Dec 2023) by Jeff King (peff
).
(Merged by Junio C Hamano -- gitster
-- in commit 67dfb89, 20 Dec 2023)
bisect
: always clean on reset
Reported-by: Janik Haag
Signed-off-by: Jeff King
Usually "bisect reset
" cleans up any refs/bisect/
refs, along with meta-files like .git/BISECT_LOG
.
But it only does so after deciding that a bisection is active, which it does by reading BISECT_START
.
That is usually fine, but it is possible to get into a confusing state if the BISECT_START
file is gone, but other cruft is left (this might be due to a bug, or a system crash, etc).
And since "bisect reset
" refuses to do anything in this state, the user has no easy way to clean up the leftover cruft.
While another "bisect start
" would clear the state, in the interim it can be annoying, as other tools (like our bash prompt code) think we are bisecting, and for-each-ref output may be polluted with refs/bisect/
entries.
Further adding to the confusion is that running "bisect reset $some_ref
" skips the BISECT_START
check.
So it never realizes that there is no bisection active and does the cleanup anyway!
So let's just make sure we always do the cleanup, whether we looked at BISECT_START
or not.
If the user does not give us a commit to reset to, we will still say "We are not bisecting
" and skip the call to "git checkout
".
No more "You are currently bisecting
" after a git bisect reset
.