当前位置: 首页> 产品经理

gitbisect命令教程

发布时间:20-04-06

git bisect是一个很有用的命令,用来查找哪Θ一次代码提交引入了错误。

⿳ ┕ △¤ ⇔ ♀ ▦▩ *

它的原理很简单,就是将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将∏代码历史一≌分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。

本文通过一个实例,解释▉如何使用这∞个命令。下面是一个代┌码库,γ请将它克隆到本地。

$ git clone git@gith〾ub.com:bradleyboy/bisecterci☞se.git $ cd bisectercise

这个库是一个网页index.html,在浏览器打开这个网页。

$ op≮≯en in⿶dex.html

网页上是一个计数器,有两个按Б钮。点击+号按钮,可以看到计数器没有递增,反而ⓞ递减,这说明代码有问题。

现在,就要来查找,到底哪一次代码提交,引入了错误。首先,检查一下代码提交历史。

$ git log --prettyД=oneline

可以看到,这个库一共有101次提交。最早的第一Ш次提交的哈希是︱︳4d83cf。

git bi〾sect start命令启动查错,它的格式如下。

$ git bisect start [终点] [起点]

上面代码中,"终点"是最近的提交,"起点"是更久以前的提交。它们之间的这段→历史,就是差错的范围。

这个例子中,我们选择全部的代码历史。起点是第一次提交4d83cf,终〧⊙点是最近一次的HEAD。⿻当然,指定其他范围也可以。

$ git bisect start HEAD 4┖d83cfψ┏

执行上面的命令以后,代码库就会切换到这段范围正当中的那一次提交,本例是第51次提交。

现在刷κ新浏览器,点击+按钮,发现可以正常递Ц增。使◣用git bisect good命令,标识本次℡提交(第51次)没有问题。

$ git bisect good

既然第51次提交没有问题,就意味着错误是在代码历史的后半段引入的。执◎行上面的命︵令,Git 就自动切换到后半段的中点(第76次提交)。

现在刷新浏览器,点击+按钮,发现不能正常递增。使用git bi▣▤▥sect bad命令,标识本次提交(第76)有问题。

$ git bisect b▪ad

执行上面∨的命令以后,Git 就自动切换到第51次到第76次⿸的中点(第63次提交)。

接下来,不断重复这个过程,直到成功找到出问题℅的那一次提交为止。这时Ⅱ,Git 会给出如下的提示。

b47892 is the first bad commit

既然找到那个有问题的提〣交,就╬可以检查代▷码,确定具体是什么错误。

然后,使用git bise⿵ct reset命令,退出查错,回到最近一次的代码提交。

$ git bisíect reset

现在就可以开始修复错误了。

(完)