当前位置: 首页 > news >正文

Git Bisect 使用指南:高效定位引入 Bug 的提交

git bisect 是一个用来定位引入 bug 的提交的命令。通过二分查找的方式,它能帮助你找到哪一个提交导致了问题,特别是在提交历史较长的情况下非常有用。

使用步骤

  1. 初始化 bisect
    首先,使用 git bisect start 来开始查找。

  2. 标记已知的好提交和坏提交

    • 使用 git bisect good <commit> 来标记一个已知的好提交(没有问题)。
    • 使用 git bisect bad <commit> 来标记当前的坏提交(有问题)。

    例如,假设你知道在 commit A 之前代码是好的,在 commit B 后代码是坏的,命令如下:

    git bisect start
    git bisect good <commit A>
    git bisect bad <commit B>
    
  3. Git 会自动选择一个中间的提交
    Git 会基于你给出的“好”提交和“坏”提交,自动选择一个中间的提交来检查是否存在 bug。

  4. 测试并标记每个提交

    • 在每次检查完 Git 选择的提交后,你需要测试代码,看看它是否有 bug。
    • 如果提交是好的,使用 git bisect good
    • 如果提交是坏的,使用 git bisect bad
  5. 重复直到找到问题提交
    Git 会继续二分查找,每次选择中间的提交进行检查,直到找到导致问题的提交。

  6. 结束 bisect
    一旦找到了坏提交,使用以下命令结束 bisect:

    git bisect reset
    

    这会将你的 HEAD 恢复到 bisect 开始前的状态。

示例

假设你发现从某个提交开始出现了 bug,但不确定是哪次提交引入的,流程可能如下:

  1. 假设最初的 bug 出现时,当前版本为 bad_commit,之前的版本是好的,可以确定。
  2. 假设从 commit Abad_commit 之间引入了 bug,运行:
    git bisect start
    git bisect good <commit A>  # 标记为好的提交
    git bisect bad <bad_commit>  # 标记为坏的提交
    
  3. Git 会选择一个中间的提交进行测试,测试后,继续使用 git bisect goodgit bisect bad 来标记该提交。
  4. 重复这个过程,直到定位到导致 bug 的提交。

这个方法特别适用于排查问题,特别是当你不确定是哪个提交引入了 bug 时。

相关文章:

  • Qt之自定义界面组件 一
  • Jenkins 快讯
  • STM32G070CBT6读写FLASH中的数据
  • 浅谈Mysql数据库事务操作 用mybatis操作mysql事务 再在Springboot中使用Spring事务控制mysql事务回滚
  • ‌RTSPtoWeb, 一个将rtsp转换成webrtc的开源项目
  • 银河麒麟V10SP3Server中离线安装Docker引擎与docker-compose
  • 电池预测 | 第23讲 基于CNN-BiLSTM的锂电池剩余寿命预测,附带PPT视频讲解
  • GB9706.1-2020附件J绝缘路径参考
  • Redis系列:深入理解缓存穿透、缓存击穿、缓存雪崩及其解决方案
  • 如何用AI轻松制作完美PPT,节省时间又提升效率
  • 数据结构——查找
  • 背包问题——多重背包(C语言)
  • [免费]直接整篇翻译pdf工具-支持多种语言
  • Unity导出WebGL
  • 【GPT入门】第23课 langchain serve介绍
  • 【网页】CSS原子化+变量尝试
  • test skills
  • openai 标准化协议 Structured Outputs 具体示例教程
  • Django settings.py 文件全解析
  • 案例:图书管理
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案
  • 发布亮眼一季度报后,东阿阿胶股价跌停:现金流隐忧引发争议
  • 专访|首夺天元头衔创生涯历史,王星昊打算一步一步慢慢来
  • 为何未来的福利国家必须绿色且公平
  • 商务部:将积极会同相关部门加快推进离境退税政策落实落地
  • 当智驾成标配,车企暗战升级|2025上海车展