0

'git bisect' 的正常用例是将引用的尖端声明为 'bad' 状态,并在历史记录中搜索最新的 'good' 状态。在搜索引入错误的提交时,这是有道理的。

但是,有时会在较旧的代码中发现错误,并在最新的提交中修复,问题是:哪个提交修复了这个错误?可以使用git bisect“好”和“坏”两个词的相反含义,即认为已修复的错误是“坏”状态,而错误是“好”状态。但这有点令人困惑 - 从“好”状态开始平分并搜索“坏”状态可能更清楚。但 git 似乎不喜欢这种方法:

$ git bisect start
$ git bisect good
$ git checkout <commit with known bug>
$ git bisect bad
Some good revs are not ancestor of the bad rev.
git bisect cannot work properly in this case.
Maybe you mistake good and bad revs?

处理这种情况有什么好的方法?

4

1 回答 1

3

你可能已经注意到 git 并不是“漂亮”和“直观的界面”。您确实猜到了答案和正确的 git 方式:只需将固定视为坏而不是固定为好。

由于除了有点难看之外,这完美地处理了您的(不太常见的)情况,因此在 git 中不需要对它提供特殊支持,您可以假设永远不会。

编辑:我错了。Git 在 2.7 版中添加了对此的支持——请参阅此答案

于 2013-07-16T16:01:02.243 回答