I did a git bisect and got the result
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
How can I proceed?
I did a git bisect and got the result
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
How can I proceed?
This will happen if the given good and bad revision are not direct descendants of each other.
Let's assume a repository like this (using exemplary names for the commits):
* dffa2 good-commit
* b38f4 a2
* cc19f a1
| * d1f17 bad-commit
| * fbd1f b2
| * f66cc b1
|/
* 09f66 merge-base-commit
As the message uses the term "merge base", it might be helpful to understand that term to understand the message. A "merge base" of two or more commits is the latest commit which is a parent of all of those commits.
Therefore if those commits would be merged, all changes between the "merge base" and those commits will be merged together. Every commit which is a parent of "merge base" is not relevant to the merge, it already is a parent of all involved commits.
The described message will happen in a case like this:
$ git bisect start
$ git bisect good good-commit
$ git bisect bad bad-commit
Bisecting: a merge base must be tested
[09f66] merge-base-commit
What bisecting does is to find the commit which introduced a problem (leading to a bad
state), which in this case could lead to a problem:
good-commit
and bad-commit
Assume that the error existed in merge-base-commit. In this case it will not be possible to find the commit that introduced the bug in the difference between good-commit and bad-commit. Instead one of the commits a1
, a2
and good-commit
solves the problem, which is exactly what will happen if you decide the merge base to be bad:
$ git bisect bad
The merge base merge-base-commit is bad.
This means the bug has been fixed between 09f66 and [dffa2].
merge-base-commit
and bad-commit
On the other hand if the merge base is good, the problem was introduced in b1
, b2
or bad-commit
. bisect
will then continue between merge-base-commit
and bad-commit
, picking the commit in the middle between those commits and testing if that one is good:
$ git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
[fbd1f] b2
Let it run, it's normal if there are merges on the path that has to be bisected.
You just need to tell git bisect
if this is a good commit or a bad commit - the "test" in question is you testing your code for the bug/feature you are trying to find.
You can do
git bisect good
or
git bisect bad
to continue.
© 2022 - 2024 — McMap. All rights reserved.