问题代码定位神器: Git Bisect

在用git管理代码的过程中,经常需要回溯代码提交,找到引入问题的初始提交。git bisect用的人不多,但正好能够帮助我们回溯并测试代码。原文: Debugging Made Easy with Git Bisect

alt
Git Bisect是什么?

Git bisect是一个功能强大的工具,可以让我们快速找到哪个提交在代码库中引入了问题,手动检查每次提交并进行测试的日子已经一去不复返了!git bisect通过二进制搜索用最少的步骤确定引入问题的确切提交,从而节省了跟踪问题和错误的时间。

Git Bisect如何工作?

git bisect的工作原理:

  • 要求你确认最后一次已知的 正确提交(不包含错误的提交)
  • 要求你识别一个 错误提交(包含错误的提交,通常是 master分支的头部)
  • 反复签出新提交,并要求你测试并识别是好的还是坏的

如下图所示,在每个阶段,基于当前提交是否包含错误,算法使用二分搜索将罪魁祸首的提交缩小到范围A或范围B:

alt
如何使用?

使用git bisect:

  1. 从顶层工作目录开始,切换到存在错误的分支上
  2. 执行 git bisect start
  3. 执行 git bisect bad将当前提交标记为包含错误
  4. 执行 git bisect good <commit-hash>,标记一个你知道没有问题的提交哈希,比方说,你可以用 git log找到2周前的某个没有问题的提交哈希
  5. Git bisect现在会重复签出提交,直到找到罪魁祸首为止。在每次签出时,通过测试以确定是否存在错误
  6. 如果这次提交中存在错误,执行 git bisect bad。如果没有问题,那就执行 git bisect good
  7. 一旦git bisect找到罪魁祸首,会打印这样的日志:
d046321145678970f1c4191ca3fca822bb7219b7 is the first bad commit
  1. 执行 git bisect reset重置工作树

恭喜你找到了罪魁祸首🎉

结论

总之,git bisect对于任何开发人员的调试工具包来说都是一个至关重要的工具。它允许我们有效定位在代码库中引入错误的提交,从而节省在该过程中的时间和精力。如果还没用过git bisect,强烈建议尝试一下。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

- END -

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值