注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

简洁即美

最简洁的手法保存记忆

 
 
 

日志

 
 

Git: bisect HowTo  

2011-01-28 16:44:30|  分类: GIT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    刚才说到在Qt4.5.3和Qt4.6.0之间有超过五千个change, 大家可能觉得bisect应该是项非常庞大的工程, 其实也不尽然。 二分查找本质上就是不停的除以二, 即使是五千多这么个让人看着很心寒的数字,除个十来次也差不多了。
  在开始bisect之前我们先要找出有差异的两个版本label, 这一步比较容易,在你发现差异的同时想必已经对有差异的两个版本号了然于胸了吧。 Qt的发布版本和git的分支label之间有对应的关系, 如Qt4.5.3就对应v4.5.3这个label。
  
  下面展开bisect旅程, 假设在4.6.0里修正了4.5.3的一个bug, 我们要找到这个bug的fix。 进入项目下载目录运行下面的命令:
  $ git bisect start
  
  确认代码二分的起始点和结束点:
  $ git bisect bad v4.5.3
  $ git bisect good v4.6.0
  
  这时git会自动显示出这两个label之间的change数, 需要做git bisect的次数,并自动二分, 然后下载二分后的代码。 然后我们要基于当前的git代码状态编译出一个版本,验证此版本是good还是bad。 验证之后只需要运行git bisect good/bad (根据实际情况给good或者bad), git就会继续自动二分的过程, 直至完全定位, 整个过程十分简单
  
  另外一点是git bisect还有个很有用的选项叫 git bisect visual, 该命令是用可视化的方式显示出相关的change及其注释, 让我们能在众多change看到需要的内容, 这个功能在bisect到接近完成阶段的时候特别有用。 用数字说话大家就明白了, 我们可能经过bisect 5次就剩下十几个change需要验证, 但这十几个change却要用另外的4、5次bisect才能完成, 有点得不偿失, 这时我们可以直接运行git bisect visual, 看看这十几个change都关乎哪些文件,从它们的描述和涉及的文件往往很容易就看到哪个是我们要找的东西了, 这样可以节省4、5次bisect的时间。
  
  在完成bisect之后运行git bisect reset, git会自动把代码reset到bisect开始之前的状态, 完全不用我们费多少脑筋。
  评论这张
 
阅读(574)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018