我进行了Git二分查找并得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
我该怎么操作?
我进行了Git二分查找并得到了结果
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
二分法是为了找到引入问题(导致状态出现错误)的提交记录,这种情况可能会导致问题:
good-commit
和bad-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
、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
继续阅读。