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.rhkb.cn/news/458647.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

院士领衔,瑞德磁电誓将中国红染遍磁电产业

【哔哥哔特导读】今天我们从广州来到淮北&#xff0c;参观一家由院士领衔创立的金属磁粉芯企业&#xff0c;看他们如何将中国红染遍磁电产业&#xff0c;一步步实现金属磁粉芯的国产替代。 想要成为一个领域的头部企业&#xff0c;技术实力与产能规模缺一不可&#xff0c;而瑞…

[翱捷]让SDK跑起来了

一&#xff0c;环境安排及验证 参照文档 <<ASR编译环境及编译步骤--3601.docx>> <<Windows环境搭建.docx>> <<ChildWatchSWUG_1221.doc>> 主要工具包括 ARM DS-5 V5.26.2 (64-bit)ActivePerl 5.28.1 Build 2801 (64-bit)msys2-x86_6…

摊牌了,创业失败了

“以为这个网红不会塌房&#xff0c;结果一觉醒来&#xff0c;天塌了……” ——某电商供应商 “这不是禁不住网上的各种诱惑吗&#xff0c;9月30日纵身入局&#xff0c;节假日几天不能买入&#xff0c;8号上班第一天我还看着钱数开心呢。结果今天……” ——一位投资失利&…

Python日志系统详解:Logging模块最佳实践

Python日志系统详解&#xff1a;Logging模块最佳实践 在开发Python应用程序时&#xff0c;日志记录是排查问题、监控系统状态、优化性能的重要手段。Python标准库中提供了强大的logging模块&#xff0c;使开发者可以轻松实现灵活的日志系统。本文将详细介绍Python的logging模块…

Java实现邮箱发送邮件添加定时任务(二)

上篇文章我们谈到邮件的发送&#xff0c;但是可以发现使用非常局限&#xff0c;这里我做了一个简单的修改&#xff0c;添加了定时发送功能&#xff0c;可以帮助我们处理很多繁琐的事 这里我写了一个简单的案例 1. 先在pom文件里面添加依赖 2.配置yml文件 3.写一个定时任务类…

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …

AI最新动态概览-2024年10月28日

1. 字节跳动加速欧洲布局&#xff0c;拟建AI研发中心 近日&#xff0c;有消息称字节跳动正积极筹备在欧洲设立AI研发中心&#xff0c;此举标志着该公司在全球技术版图上的又一重要扩张。随着人工智能技术的飞速发展&#xff0c;字节跳动正通过招兵买马&#xff0c;进一步巩固其…

Linux 进程优先级 进程切换

目录 优先级 概念 为什么优先级要限制在一定范围内 进程切换 方式 EIP寄存器(程序计数器) 进程在运行时会使用寄存器来保存临时数据 进程的上下文是什么&#xff1f; 进程的上下文保存到哪&#xff1f; 内核栈或专门的上下文结构也在内核空间&#xff1f;那为什么不直…

java 提示 避免用Apache Beanutils进行属性的copy。

避免用Apache Beanutils进行属性的copy。 Inspection info: 避免用Apache Beanutils进行属性的copy。 说明&#xff1a;Apache BeanUtils性能较差&#xff0c;可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier。 TestObject a new TestObject(); TestObject b new Te…

2024 最新 frida技术栈 第一部分

目录 1.下载 2. 安装 2.1. 命令 3.基本使用 3.1 列出运行的APP 3.2 列出所有APP 3.3 杀死进程 4. frida hook 方法 4.1 frida客户端命令行的参数 4.2. Frida两种操作模式 4.3. Frida操作APP的两种方式 4.3.1. attach模式 4.3.2. spawn模式 4.3.3 转发端口启…

RabbitMQ的Overview Totals是空

一、问题描述 RabbitMQ 版本&#xff1a;4.0.2&#xff0c;Erlang 版本&#xff1a;26.2.5.4。 RabbitMQ 页面管理(rabbitmq_management)的 Overview > Totals 是空&#xff1a; 二、原因分析 RabbitMQ 的配置&#xff1a; management_agent.disable_metrics_collector…

Hive的数据存储格式

目录 一、前言 二、存储格式 2.1、文本格式&#xff08;TextFile&#xff09; 2.1.1、定义与特点 2.1.2、存储与压缩 2. 1.3、使用场景 2.2、行列式文件&#xff08;ORCFile&#xff09; 2.2.1、ORC的结构 2.2.2、ORC的数据类型 2.2.3、ORC的压缩格式 2.2.3、ORC存储…

LVGL移植教程(超详细)——基于GD32F303X系列MCU

版本&#xff1a;LVGL Kernel V8.3.0&#xff0c;运行压力测试Demo Stress首先放一张最终Stress Demo 运行图&#xff1a; 一、准备 1. GD32 Keil工程 准备任意一个屏幕可以正常显示的GD32工程&#xff1a; 2. LVGL源码 最新版现在已经是V9.2了&#xff0c;这里我选择了…

XQT_UI 组件|03 |加载组件 XQtLoading

XQtLoading 使用文档 简介 XQtLoading 是一个自定义的加载动画组件&#xff0c;旨在为用户提供可配置的旋转花瓣动画效果。它可以在应用程序中用于指示加载状态&#xff0c;提升用户体验。 特征 可配置性&#xff1a;用户可以根据需求调整旋转周期、缩放周期、最大/最小缩放…

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…

关于嵌入式学习的一些短浅经验

一、写在前面 感谢在 10.23&#xff0c;各位大佬对我进行的模拟面试&#xff0c;我也发现了我对知识的不熟练的部分&#xff0c;比如 IPC 方法和线程同步方法的知识。模拟面试第四期-已经拿到大厂 OFFER 的研究生大佬-LINUX 卷到飞起_哔哩哔哩_bilibili 然后&#xff0c;沈阳…

uniapp+uniCloud前端独立开发全栈项目Vue3版本学习路线,轻松开发H5、微信小程序、APP

概述 嗨&#xff0c;大家好&#xff0c;我是爱搞知识的咸虾米&#xff0c;这个学习路线是uniappuniCloud生态开发微信小程序、H5、APP等实战项目&#xff0c;从零基础开始到各种类型的项目案例&#xff0c;使用比较新的vue3语法糖版本&#xff0c;通过前端的技术可以轻松开发上…

微信小程序——消息订阅

首先用到的就是wx.requestSubscribeMessage接口。 注意&#xff1a;用户发生点击行为或者发起支付回调后&#xff0c;才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合&#xff0c;一次调用最多可…

Docker 常用命令全解析:提升对雷池社区版的使用经验

Docker 常用命令解析 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析&#xff0c;帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…

向量检索学习记录

1、Faiss Faiss是一个用于高效相似搜索和密集向量聚类的库&#xff1b;&#xff08;支持单个/多个GPU&#xff09;官方文档&#xff1a;Home facebookresearch/faiss Wiki GitHub 安装&#xff08;如果编译有问题&#xff0c;有些选项需要关下&#xff0c;比如GPU, Python&a…