git bisect 命令教程

栏目: 编程工具 · 发布时间: 6年前

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

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

git bisect 命令教程

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

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

$ git clone git@github.com:bradleyboy/bisectercise.git
$ cd bisectercise

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

$ open index.html

git bisect 命令教程

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

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

$ git log --pretty=oneline

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

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

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

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

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

$ git bisect start HEAD 4d83cf

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

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

$ git bisect good

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

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

$ git bisect bad

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

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

b47892 is the first bad commit

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

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

$ git bisect reset

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

(完)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JSP & Servlet学习笔记

JSP & Servlet学习笔记

【台湾】林信良 / 清华大学出版社 / 2012-5 / 58.00元

本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做了全面更新。书中详细介绍了Servlet/ JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/ JSP如何与容器互动。本书还涵盖了文本处理......一起来看看 《JSP & Servlet学习笔记》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具