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

git bisect和git blame

1.用 git bisect 找到出错的commit

设置开始,最新的一个已知的错误的commit和第一个已知的正确的commit,通过二分法,找出第一个出错的commit。

二分查找法(binary search method)或二分法(bisection method),是一种在有序数组中查找目标位置的搜索方法。算法会在每一步与数组的中间值进行比较,如果匹配成功则返回该位置;否则,根据比较结果,选择中间值的右侧或左侧的子数组继续搜索,直至找到目标位置。在 Git 中,历史提交记录对应一组可供测试的值数组,若程序能在某个 commit 编译成功则为目标位置。二分查找的算法复杂度为 O(log n)

开始测试:

$ git bisect start

将当前版本标记为【bad】:


$ git bisect bad

将上一个正常版本标记为【good】:


$ git bisect good master

启动第一轮排查:

具体参见(用 git bisect 快速定位你想找的 commit当项目报错,你想定位是哪个 commit 引入的错误的时候,会怎 - 掘金)

2. 使用 git blame 命令

 git bisect 适用于只知道项目有 bug,但不知道 bug 在哪儿、是具体哪次提交引入的场景。如果知道了 bug 在代码中的位置,需要明确谁提交或改动的这行代码,就需要使用 git blame 命令。

git blame --date short -L 1,10 ChangeLog.MD1a3b00cd (Henry Wu 2024-08-29  1) # 2024-08-28 等保原由做了修改
1a3b00cd (Henry Wu 2024-08-29  2)  小程序游客绑定工号可能会报错误;
1a3b00cd (Henry Wu 2024-08-29  3)  移动注册页面需要修改;
1a3b00cd (Henry Wu 2024-08-29  4)
feff34d1 (Henry Wu 2023-03-24  5)
3f600469 (Henry Wu 2024-07-16  6) # 2024-07-16 清理文件
3f600469 (Henry Wu 2024-07-16  7)  移除MigrationBackup文件夹,其中为
3f600469 (Henry Wu 2024-07-16  8)  V1/Service/Share/packages.config
3f600469 (Henry Wu 2024-07-16  9)  V1/Service/Share/abc.cs
3f600469 (Henry Wu 2024-07-16 10)  这2个项目升级时的备份

其中的 -L 表示限定考察代码的行数范围,格式为 -L <from>,<to> 。从反馈的结果可知,bug 出现在 map.txt 文件的第 37 至 39 行,由 HAL 首次引入该 bug,对应 SHA-1 为 83076f97,与 git bisect 结果一致。

此外,还可以指定 -M 参数,查看文件被重构或移动到某处的情况;指定 -C 参数,则可以展示目标文件从当前 commit 包含的文件中复制或移入相关代码的情况;指定 -CCC 则范围不仅限于当前 commit,可包含所有 commit

http://www.lryc.cn/news/470792.html

相关文章:

  • 【面试题】Node.JS篇
  • Leetcode11:盛水最多的容器
  • php如何对海量数据进行基数统计
  • git命令报错:fatal: not a git repository (or any of the parent directories): .git
  • 如何通过sip信令以及抓包文件分析媒体发到哪个地方
  • 【网络安全零基础入门】一文搞懂Javascript实现Post请求、Ajax请求、输出数据到页面、实现前进后退、文件上传
  • NVR管理平台EasyNVR多个NVR同时管理综合应用方案
  • SpringBoot核心框架之AOP详解
  • Linux: network: ifconfig已经过时,建议使用ip addr相关命令
  • Flutter 鸿蒙next中的路由使用详解【基础使用】
  • 基于SSM+小程序民宿短租管理系统(民宿1)
  • SQL LIKE 操作符
  • 七款主流图纸加密软件强力推荐|2024年CAD图纸加密保护指南
  • 【STM32】单片机ADC原理详解及应用编程
  • C# 委托简述
  • 瑞吉外卖项目
  • Docker:4、龙晰(Anolis OS 8.8)宝塔面板安装
  • 多端项目开发全流程详解 - 从需求分析到多端部署
  • 4.5KB原生html+js+css实现图片打印位置的坐标和尺寸获取
  • 智诊小助手-记录模式选择
  • JDBC: Java数据库连接的桥梁
  • 英伟达GPU算力【自用】
  • 「C/C++」C++11 之 智能指针
  • 算法面试小抄
  • 当有违法数据时,浏览器不解析,返回了undefined,导致数据不解析
  • 在MySQL中ORDER BY使用的那种排序算法
  • 学习threejs,使用粒子实现雨滴特效
  • 分布式-单元化架构1
  • C++模板、STL
  • 计算机视觉中的点算子:从零开始构建