我做了一个 git bisect 并得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
我该如何进行?
我做了一个 git bisect 并得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
我该如何进行?
如果给定的好修订和坏修订不是彼此的直接后代,则会发生这种情况。
让我们假设一个像这样的存储库(使用提交的示例名称):
* dffa2 good-commit
* b38f4 a2
* cc19f a1
| * d1f17 bad-commit
| * fbd1f b2
| * f66cc b1
|/
* 09f66 merge-base-commit
由于消息使用术语“合并基础”,因此理解该术语可能有助于理解消息。两个或多个提交的“合并基础”是最新的提交,它是所有这些提交的父级。
因此,如果这些提交将被合并,“合并基础”和这些提交之间的所有更改将被合并在一起。作为“合并基础”的父级的每个提交都与合并无关,它已经是所有涉及的提交的父级。
所描述的消息将在这样的情况下发生:
$ git bisect start
$ git bisect good good-commit
$ git bisect bad bad-commit
Bisecting: a merge base must be tested
[09f66] merge-base-commit
二分法的作用是找到引入问题(导致bad
状态)的提交,在这种情况下可能会导致问题:
good-commit
和之间没有引入错误bad-commit
假设错误存在于 merge-base-commit 中。在这种情况下,将无法在好提交和坏提交之间找到引入错误的提交。取而代之的是其中一个提交a1
,a2
并good-commit
解决了问题,如果您决定合并基础不好,这正是会发生的情况:
$ 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
和之间bad-commit
另一方面,如果合并基础良好,则问题是在或中引入b1
的。然后将在and之间继续,在这些提交之间选择提交并测试该提交是否良好:b2
bad-commit
bisect
merge-base-commit
bad-commit
$ git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
[fbd1f] b2
让它运行,如果在必须平分的路径上有合并,这是正常的。
您只需要判断git bisect
这是一个好的提交还是一个坏的提交 - 有问题的“测试”是您测试您的代码以查找您要查找的错误/功能。
你可以做
git bisect good
或者
git bisect bad
接着说。