4

我在一个名为的单独分支上redesign-test-fixes,我运行git bisect start. 之后,我测试我的错误并运行git bisect bad. 终端不打印输出。然后我运行git bisect good。同样的事情,终端上没有输出。好像 bisect 一开始就没有运行。通常我希望终端输出有关剩余步数的信息。出了什么问题,我该如何解决?我是否处于某种不允许我运行 bisect 的 git 状态。

git 状态响应:

On branch redesign-test-fixes
nothing to commit, working directory clean

但是,如果我运行git bisect startgit status 响应:

On branch redesign-test-fixes
You are currently bisecting, started from branch 'redesign-test-fixes'.
  (use "git bisect reset" to get back to the original branch)

nothing to commit, working directory clean
4

1 回答 1

11

您使用git bisect不正确。键入后git bisect start,您需要提供一系列提交以git bisect供使用。该范围由“好”提交定义,您确定该错误不会出现,然后是“错误”提交,您认为该错误肯定存在。因此,您的使用应该像这样开始:

git bisect start
git bisect good <SHA-1 of good commit>
git bisect bad  <SHA-1 of bad commit>

假设你在好和坏之间有 20 次提交,你应该看到输出看起来像这样:

Bisecting: 10 revisions left to test after this (roughly 4 steps)

剩下 10 个修订的原因是因为 Git 已经检查了您选择的范围内的中间提交,并且它知道最多有10 个提交需要检查以找到引入错误的提交。

接下来,您需要在此中间提交时检查您的应用程序并确定是否存在错误。如果您没有找到错误,请键入:

git bisect good

如果您确实看到了该错误,请键入:

git bisect bad

这将再次向您显示如下所示的输出:

Bisecting: 5 revisions left to test after this (roughly 2 steps)

在没有明确告诉你的情况下,Git 再次检查了新范围的中间提交。

你将继续这个输入过程git bisect good/bad,当没有任何东西可以分割时,Git 会向你显示第一个错误提交:

a8h39dk32... is the first bad commit

进一步阅读:

这是一个很棒的教程的链接,它涵盖了git bisect. 而且我发现即使是官方的 Git 文档也不是很彻底。

于 2016-08-18T15:52:22.910 回答