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

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.MD

1a3b00cd (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.kler.cn/a/370831.html

相关文章:

  • Vue.js组件开发-如何处理跨域请求
  • 简明docker快速入门并实践方法
  • 深度学习在文本情感分析中的应用
  • ginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)
  • 中国石油大学(华东)自动评教工具(涵盖爬虫的基础知识,适合练手)
  • PyTorch 中的 Dropout 解析
  • MySQL用户权限管理属于SQL语句中的DCL语句
  • C++引用类型变量
  • 青少年编程与数学 02-002 Sql Server 数据库应用 10课题、记录的操作
  • windows文件实时同步
  • Spring Boot技术栈在厨艺交流平台中的应用
  • 面试经典 150 题.P26. 删除有序数组中的重复项(003)
  • 【JavaEE】【多线程】定时器
  • 坚持使用kimi搭建小程序2小时(04天/05天)
  • 宇音天下最新力作 | VTX356语音识别合成芯片问世
  • Angular 15 独立组件详解
  • Linux shell编程学习笔记87:blkid命令——获取块设备信息
  • 触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程!
  • 自动驾驶-传感器简述
  • D52【python 接口自动化学习】- python基础之模块与标准库
  • android 12 应用安装白名单
  • C++ 整型大数运算(大整数运算)项目
  • # Docker:技术架构的演进之路
  • Vue学习记录之二十一 Vue3中3种编程风格介绍
  • Vue.js/ElementUI-el-upload 与Spring Boot实现文件上传
  • 【Hadoop】hadoop的路径分不清?HDFS路径与本地文件系统路径的区别