【问题标题】:git bisect not responding to commandsgit bisect 不响应命令
【发布时间】:2016-12-25 14:58:39
【问题描述】:

我在一个名为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 start,git 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

【问题讨论】:

  • git status 说什么?
  • On branch redesign-test-fixes nothing to commit, working directory clean

标签: git git-bisect


【解决方案1】:

您错误地使用了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

进一步阅读:

这是一个指向great tutorial 的链接,其中涵盖了git bisect 的全部用法。而且我发现即使是官方的 Git 文档也不是很全面。

【讨论】:

  • 所以我必须手动找到一个对开始 bisect 有好处的提交? git bisect 不能简单地转到提交的中间点并从那里开始工作,而不是提供一个好的和坏的提交的 SHA-1 吗?错误提交的默认值不能是我最近的提交吗?我一直认为 git bisect 不需要 SHA-1 提交来开始。
  • “提交的中点”是什么意思?即使第一次提交是几年前做出的,Git 选择最近一次提交和第一次提交之间的中间点真的是一个好的设计吗?是的,您需要提供提交的范围(初始好的和坏的提交)才能使用git bisect
  • @jason328 是的,这方面的文档很差,因为您离开时认为用法是某种方式,而实际上并非如此。试试我的回答,如果您还有任何问题,请告诉我。
猜你喜欢
  • 2015-06-23
  • 2020-05-07
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多