我正在使用 bisect 来找到从上游内核代码修复 S4 问题的良好提交。但是当我这样做时,我遇到了一个令人困惑的问题:
git bisect start
git bisect bad v4.8-rc1
git bisect good v4.7
完成结果需要 13 个步骤。
但是我发现 bisect 会选择一些比 v4.7 标签更早的提交,这正常吗?
在我看来,从时间线来看,bisect 应该在 v4.7 标签和 v4.8-rc1 标签之间选择提交。
在我看来,从时间线来看,bisect 应该在 v4.7 标签和 v4.8-rc1 标签之间选择提交。
这不完全是 bisect 会做的事情。bisect 将选择包含在标签 v4.8-rc1 中并且不包含在标签 v4.7 中的所有提交。如果例如从 v4.6 创建一个分支并且在创建 v4.7 之前将更改提交给它,这将有所不同 - 但该分支没有合并到 v4.7 中。特别是在内核开发中,可能有很多更改在合并之前已经提交了很长时间。这些提交的日期将在 v4.7 之前,但是它们的更改不包含在 v4.7 中。
重要的是 bisect 以这种方式运行,而不是基于时间,因为它用于查找引入问题的提交。这也可能发生在“好”版本之前创建但尚未包含在其中的提交中。
如果您有一个提交,您可以使用git tag --contains <commit-hash>
. 很可能标签 v4.7 不会成为该列表的一部分,这就是为什么选择这些提交的解释git bisect
。