Git Bisect不响应命令

4
我在一个名为redesign-test-fixes的独立分支上并运行git bisect start。之后,我测试我的错误并运行git bisect bad。终端没有输出。然后我运行git bisect good。同样的事情,终端没有输出。就好像bisect根本没有运行一样。通常,我希望终端输出有关剩余步骤数量的信息。怎么了,我该如何解决这个问题?我是否处于某种不允许我运行bisect的git状态中。
On branch redesign-test-fixes
nothing to commit, working directory clean

然而,如果我运行git bisect start,git状态会做出响应:
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

git status 说了什么? - orkoden
On branch redesign-test-fixes nothing to commit, working directory clean - thank_you
1个回答

11

你在错误地使用git bisect。在输入 git bisect start 后,你需要提供一段提交范围给 git bisect 使用。这个范围由一个“好”的提交和一个“坏”的提交定义,在“好”的提交中你确定没有出现bug,在“坏”的提交中你相信问题一定存在。因此,你应该像这样开始使用:

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

如果你发现了bug,请输入:

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文档也不是完全详尽的。


1
那么我必须手动找到一个好的提交来开始二分查找吗? git bisect不能简单地转到提交的一半并从那里开始工作,而不是提供一个良好和坏的提交的SHA-1吗?默认的坏提交不能是我最近的提交吗?我一直认为git bisect不需要SHA-1 commits即可开始。 - thank_you
2
“halfway point in the commits”是什么意思?即使第一个提交是在几年前进行的,Git是否真的应选择最新提交和第一个提交之间的中点作为设计良好的位置?是的,您需要提供一系列提交(初始好的提交和坏的提交),以便使用git bisect命令。 - Tim Biegeleisen
1
@jason328 是的,就这方面而言,文档确实很差,因为它让你认为使用方式是某种方式,但实际上并不是这样。请尝试我的答案,并告诉我是否仍有任何问题。 - Tim Biegeleisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接