git对分不';不工作,就没有输出
最近我试着使用git-bisect,但它就是不起作用。树仍然在master中,我没有看到来自git对分不';不工作,就没有输出,git,git-bisect,Git,Git Bisect,最近我试着使用git-bisect,但它就是不起作用。树仍然在master中,我没有看到来自git-bisect的任何输出。以下是我尝试过的: git bisect start git bisect bad # no output, tried a couple of times git bisect good # no output git bisect reset #-> Already on 'master' 我在两个不同的回购协议上试过了。没用。git——Ubuntu 9.
git-bisect
的任何输出。以下是我尝试过的:
git bisect start
git bisect bad # no output, tried a couple of times
git bisect good # no output
git bisect reset #-> Already on 'master'
我在两个不同的回购协议上试过了。没用。git——Ubuntu 9.10上的版本是1.6.3.3
有什么想法吗?Git对分介绍 “git对分”一开始可能有点让人困惑。一旦你了解了它的功能,就很容易了 “git二分法”的典型场景是:刚刚发现一个bug。您想知道是哪个版本引入了这个bug。您知道这个bug存在于最新版本中,但它是在以前的版本中引入的。您将需要一种方法来确定bug是否存在。这可以是自动测试,也可以是手动运行的测试 让我们开始吧。从分支机构的最新版本开始,发布:
git bisect start
然后告诉git已知当前版本不好:
git bisect bad
现在我们需要找到一个好的版本。检查一个足够大的东西,使其不会出现错误。如果您认为32转前应该是好的,那么:
git checkout HEAD~32
然后运行测试,看看它是否有bug。如果它有bug,您需要尝试更旧的版本(只需再次发布“git checkout HEAD~32”)。一旦你降落在一个没有bug的版本上,那么:
git bisect good
这告诉git当前的版本是好的。Git将立即检查出介于良好转速和不良转速之间的转速;您将看到输出,例如:
$ git bisect good
Bisecting: 7 revisions left to test after this (roughly 3 steps)
[909ba8cd7698720d00b2d10738f6d970a8955be4] Added convenience delegators to Cache
运行测试,并根据测试结果发出以下命令之一:
git对分良好#测试通过
git bisect bad#测试失败
git bisect skip#由于某些原因,我们无法在此版本上运行测试 (不编译等)
b25ab3cee963f4738264c9c9b5a8d1a344a94623 is the first bad commit
commit b25ab3cee963f4738264c9c9b5a8d1a344a94623
Author: Wayne Conrad <wconrad@yagni.com>
Date: Fri Dec 25 18:20:54 2009 -0700
More tests and refactoring
:040000 040000 6ff7502d5828598af55c7517fd9626ba019b16aa 39f346cb5a289cdb0955fcbba552f40e704b7e65 M routecalc
现在是魔术。您所需要的只是一个测试程序,它返回退出代码“0”表示成功,返回1(例如)表示失败。告诉git您的测试:
git bisect run tests/mytest.rb
Git现在将运行测试,使用结果自动执行“Git对分好”或“Git对分坏”。它将继续执行该操作,直到找到引入错误的提交。你所要做的就是坐下来看着
完成后
完成后,发布:
git bisect reset
Git会让你回到起点。你尝试的失败是因为你告诉它同一棵树有好有坏。这显然毫无意义
git bisect start # tells git you want to do a bisect operation
git bisect bad # tells git the current treesh (HEAD) is bad
git bisect good # tells git the current treeish (HEAD) is good
因为给定的树不可能是好的和坏的,git只是假设你在纠正自己
这里的关键是,如果不指定树,那么git会假定您指的是当前的树
一个更好的方法是首先找到一个commit的树,在那里事情可以工作。然后
git bisect start
git bisect bad # tells it HEAD is bad
git bisect good abc123 # treeish of the good commit
之后,对分将自动开始运行。您仍然需要与它交互,并告诉它对分提交的状态(或编写脚本以使其自动化)。您要将哪些参数传递给
good
和bad
?“坏”提交是“好”提交的后代吗?我也有同样的问题。执行git bisect start
然后执行git bisect bad
或git bisect good
后,没有输出git对分可视化
outputs您需要给我至少一个好的和一个坏的修订。(您可以使用“git bisect bad”和“git bisect good”来实现这一点。)
无论我执行多少次git bisect good
或git bisect bad
git bisect run
都将继续运行,直到找到引入错误的提交。直到第一次错误的修订。@Lorenz,我的意思是按照提交的顺序第一次,而不是首先通过对分进行检查。我承认措辞模棱两可--很好。“我会更新它的。”老板对你的赞美表示感谢。我认为这个答案确实解决了老年退休金计划的问题;问题没有显示OP在执行“git对分好”或“git对分坏”之前使用“git checkout”更改头部,如此答案所示。您是对的-在git对分开始后使用git checkout HEAD~N
解决了问题。另一种方法是在start语句中指定提交边界,如下所示gitstartfead~N
。不幸的是,我的反对票被锁定了,所以我没能撤回它。@U不担心。在我弄清楚在哪里可以兑换这些积分来买烤面包机之类的东西之前,我有多少并不重要。
git bisect start
git bisect bad # tells it HEAD is bad
git bisect good abc123 # treeish of the good commit