git bisect 表示二等分:必须测试合并基础
git bisect says Bisecting: a merge base must be tested
我做了一个git平分得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
我该如何继续?
您只需要告诉 git bisect
这是一个好的提交还是一个坏的提交 - 有问题的 "test" 是您针对您正在尝试的 bug/feature 测试您的代码找到。
你可以做到
git bisect good
或
git bisect bad
继续。
让它运行,如果路径上有合并是正常的。
如果给定的好版本和坏版本不是彼此的直接后代,就会发生这种情况。
让我们假设一个像这样的存储库(使用示例性的提交名称):
* dffa2 good-commit
* b38f4 a2
* cc19f a1
| * d1f17 bad-commit
| * fbd1f b2
| * f66cc b1
|/
* 09f66 merge-base-commit
"merge base" 是什么意思
由于邮件使用了术语 "merge base",因此理解该术语可能有助于理解邮件。两个或多个提交的 "merge base" 是最新提交,它是所有这些提交的父项。
因此,如果要合并这些提交,则 "merge base" 和那些提交之间的所有更改都将合并在一起。作为 "merge base" 父级的每个提交与合并无关,它已经是所有相关提交的父级。
理解平分
描述的消息会在这样的情况下发生:
$ 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。在这种情况下,将无法在 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平分得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
我该如何继续?
您只需要告诉 git bisect
这是一个好的提交还是一个坏的提交 - 有问题的 "test" 是您针对您正在尝试的 bug/feature 测试您的代码找到。
你可以做到
git bisect good
或
git bisect bad
继续。
让它运行,如果路径上有合并是正常的。
如果给定的好版本和坏版本不是彼此的直接后代,就会发生这种情况。
让我们假设一个像这样的存储库(使用示例性的提交名称):
* dffa2 good-commit
* b38f4 a2
* cc19f a1
| * d1f17 bad-commit
| * fbd1f b2
| * f66cc b1
|/
* 09f66 merge-base-commit
"merge base" 是什么意思
由于邮件使用了术语 "merge base",因此理解该术语可能有助于理解邮件。两个或多个提交的 "merge base" 是最新提交,它是所有这些提交的父项。
因此,如果要合并这些提交,则 "merge base" 和那些提交之间的所有更改都将合并在一起。作为 "merge base" 父级的每个提交与合并无关,它已经是所有相关提交的父级。
理解平分
描述的消息会在这样的情况下发生:
$ 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。在这种情况下,将无法在 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