blame/bisect可以帮助快速定位bug或者回溯bug
文件标注 --- 知道bug位置,回溯bug什么时间产生
git blame -L beginline,endline filepath --->列出 指定文件中指定开始行到结束行代码分别来自哪个提交和提交者, -L 选项将结果输出限制为该文件中的第 beginline 行到第 endline 行。
git blame -C -L beginline,endline filepath --->尝试列出指定文件指定开始行到指定结束行从别的地方复制过来的代码片段的原始出处。
二分查找 --- 不知道bug位置,查找bug位置
常规操作
1、git bisect start
启动bisect
2、git bisect bad
告诉bisect代码出问题了
3、git bisect good commitid
告诉bisect那次提交是没问题的是这次之后出现的bug,git会自动checkout标记提交之后的中点提交,你可以测试一波,如果测试没问题,说明问题是出现在这次提交之后
可以继续执行git bisect good commitid告诉bisect继续寻找,直至找出有问题的提交
4、git bisect bad
告诉bisect找到了问题提交
5、git bisect reset
重置HEAD到开始查找问题的状态,必须执行否则git会停留在bisect状态
脚本
git bisect start badcommit goodcommitid
设置二分查找范围,第一个参数出问题的commitid第二个参数测试正常的commitid
git bisect run test-error.sh
Git 会自动在每个被检出的提交里执行 test-error.sh,直到找到项目第一个不正常的提交。 你也可以执行 make 或者 make tests 或者其他东西来进行自动化测试。
网友评论