问题代码定位神器: Git Bisect
在用 git 管理代码的过程中,经常需要回溯代码提交,找到引入问题的初始提交。git bisect 用的人不多,但正好能够帮助我们回溯并测试代码。原文: Debugging Made Easy with Git Bisect
Git Bisect 是什么?
Git bisect 是一个功能强大的工具,可以让我们快速找到哪个提交在代码库中引入了问题,手动检查每次提交并进行测试的日子已经一去不复返了!git bisect
通过二进制搜索用最少的步骤确定引入问题的确切提交,从而节省了跟踪问题和错误的时间。
Git Bisect 如何工作?
git bisect
的工作原理:
要求你确认最后一次已知的正确提交(不包含错误的提交)
要求你识别一个错误提交(包含错误的提交,通常是
master
分支的头部)反复签出新提交,并要求你测试并识别是好的还是坏的
如下图所示,在每个阶段,基于当前提交是否包含错误,算法使用二分搜索将罪魁祸首的提交缩小到范围 A 或范围 B:
如何使用?
使用git bisect
:
从顶层工作目录开始,切换到存在错误的分支上
执行
git bisect start
执行
git bisect bad
将当前提交标记为包含错误执行
git bisect good <commit-hash>
,标记一个你知道没有问题的提交哈希,比方说,你可以用git log
找到 2 周前的某个没有问题的提交哈希Git bisect 现在会重复签出提交,直到找到罪魁祸首为止。在每次签出时,通过测试以确定是否存在错误
如果这次提交中存在错误,执行
git bisect bad
。如果没有问题,那就执行git bisect good
。一旦 git bisect 找到罪魁祸首,会打印这样的日志:
执行
git bisect reset
重置工作树
恭喜你找到了罪魁祸首🎉
结论
总之,git bisect
对于任何开发人员的调试工具包来说都是一个至关重要的工具。它允许我们有效定位在代码库中引入错误的提交,从而节省在该过程中的时间和精力。如果还没用过git bisect
,强烈建议尝试一下。
你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind
版权声明: 本文为 InfoQ 作者【俞凡】的原创文章。
原文链接:【http://xie.infoq.cn/article/2a6490d05289aaf34fbd3c683】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论