痛点
- 通过打印错误信息或者观察现象,都难以找到Bug的由来。
- Git提交太多,很难一一验证。
实例
- 开始进行二分法定位。
$ git bisect start
- 假设最近一次提交发现问题,将它标记为bad。
$ git bisect bad
- 找一个较早的没有问题的版本,标记为good。
$ git bisect good a67f7
二分查找开始生效,自动定位到两次标记的中间版本。git自动checkout出中间版本,此时可以编译运行以验证好坏。
可以看到定位问题所需步数
-
如果中间版本有问题,标记为bad, 否则good,自动切换到下一个中间版本,再验证,如此往复。
最后一行就是罪魁祸首,bug第一次出现的提交 - 针对最后一行得出的提交id,查看该提交的修改内容,找到问题所在。可以通过以下命令回到初始状态。
$ git bisect reset
延伸
高级用法可以查看
$ man git-bisect
或者参考 http://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git
网友评论