开发工具: git 13、使用二分法查找哪一次提交引入了线上bug

三分钟教你学Git(十三) - 二分查找 比如说你收到了错误报告,然后你知道前几天明明是好的,但是这几天有好多新的commit被部署了,那么我们怎么迅速的找到第一个引入Bug的commit呢? 我们可以使用git bisect,git利用二分查找法迅速找到第一个坏的commit,下边看看具体怎么用就明白了。 我们首先告诉git我们要开始binary search了。 # git bisect start 然后我们告 阅读详情

场景

当线上有 bug 需要排查 bug 时,要最终定位到是哪个类的哪几行代码造成的这个 bug,此时就需要去看到底是哪一次提交的,是谁对这几行代码的修改造成了这次线上 bug,需要去定位责任人,发生时间等。

如果是比较严重的 case,比如导致用户无法支付,给公司造成了500万的经济损失,这肯定是要追查谁是责任人的。

命令

#开始二分查找
git bisect start

#标注当前这个commit是有bug的
git bisect bad

#标注commit为xxx的是有bug的commit
git bisect bad commitID

#标注commit为xxx的是没有bug的commit
git bisect good commitID

#退出二分查找
git bisect reset

实战

开始二分查找

git bisect start

告诉 git 当前的 commit 是有 bug 的,是一个 bad commit

git bisect bad

96
然后告诉 git,commitID 为 76714e7 的此次 commit 是没问题的。

于是 git 找到了 2 个可能有 bug 的版本,定位到的中间版本是 87058de,对 87058de 的 commi 进行单测,发现了 bug,再次输入 git bisect bad,没有其他节点了,中间版本是 4da3690,测试此次的 commit 结果为 good,于是找到了首次出现 bug 的 commit。

原理

97

别再怕多峰函数了!用Scipy的basinhopping搞定Python全局优化(附避坑指南) 本文详细介绍了如何使用Scipy的basinhopping算法解决Python中的多峰函数全局优化问题。通过盆地跳跃算法的核心原理、关键参数调优实战以及高级技巧与避坑指南,帮助开发者在机器学习模型调参、物理系统建模等复杂场景中高效找到全局最优解。文章还提供了工程实践中的经典应用案例,如机器学习超参数优化和物理模型参数拟合。 阅读详情

相关推荐

【Git实战】协同开发,如何紧急修复线上bug?_git工作流 线上问题修复

解视频,并且后续会持续更新**

2301_82257383的博客 710

Git commit消息中附带jira_id/issue_id

简介 在查询git log时,如何知道commit是对应哪一期的需求? 手动在commit信息中,填写jira_id是一个可行的办法,但一期的需求往往由多个commit,如果每个commit中都填写一次jira_id的话,那明显不是程序员的范了。 一般公司里都用到JIRA 或 Redmine等工具。当开发需求/解决bug时都有对应的jira_id或issue_id。 本文主要演示如何让git c

王命风的博客 1万+

git的使用:创建分支并提交

在终端或命令行界面中,使用 git branch 命令来创建一个新的分支。在新分支上进行你的代码更改。这可能包括添加新文件、修改现有文件等。在Git中创建一个新的分支并将代码上传到这个新分支的基本步骤如下。这条命令不仅会推送分支,还会设置上游跟踪分支,(5) 推送新分支到远程仓库。(3) 进行你的更改。

@bangbang的博客 5234

git统计每个人的代码行数_项目出了bug如何甩锅?使用这个Git工具帮你找到元凶...

公众号关注“程序员遇见GitHub”设为“星标”,重磅干货,第一时间送达。作为程序员,在职场当中经常遇到出现了问题需要定职定责的情况。比如某个系统出现了bug,导致了故障,那么这口锅究竟是谁的?这个是需要讨论的,一般来说需要测试、开发一起来背锅。如果代码不是我们写的,我们肯定是不想背这个锅的,那么怎么样来证明出bug地方的代码是谁写的呢?这个时候我们就可以使用git来寻找代码的提交记录...

weixin_39705018的博客 375

git分支管理和git提交规范

一、git分支管理 一般情况下的分支管理如下: master分支:一般用于存放正式环境上的代码,每次发版到正式时才更新,其他时间不允许修改。(每次发版后可以打个tag,标记这次大版本的发布。如果有重大bug修复发的小版本可以打大版本下的小版本tag) bug分支:万一正式环境出现严重bug妨碍使用时需要创建个bug分支进行修改,然后同步到release分支进行测试。测试后再同步到master分支发布,然后还要同时同步到iteration分支、develop分支 release分支:测试环境上的分支,开发完所

winne雪 4019

图解凸函数与凹函数:别再被数学定义搞晕了!

本文通过图解和生活化类比,深入浅出地解释了凸函数与凹函数的数学定义及其与日常直觉的差异。文章详细介绍了凸函数的图像特征、数学定义(包括二阶导数判断)、在机器学习中的重要性,以及常见误区和实际应用中的判断技巧,帮助读者彻底理解这一关键数学概念。

weixin_29159441的博客 649

Git学习——提交BUG

git stash   可以把当前工作区的修改存储起来,此时可以查看工作区是干净的。这时可以切换到别的分支去处理BUG。等BUG处理好之后,回到该分支,恢复工作区。通过: git stash list 查看保存的工作区。然后可以选择恢复: git stash apply //恢复 git stash drop //删除 git st...

weixin_30851867的博客 628

LTspice仿真实战:共模电感差模/共模插入损耗测试全流程(附WE 744821201参数)

本文以Würth Elektronik 744821201型号共模电感为例,详细介绍了在LTspice中搭建差模与共模插入损耗测试电路的全流程。通过从规格书提取关键参数、构建SPICE模型,到执行仿真并与官方数据对比,旨在帮助硬件工程师在PCB设计前期精准预测EMC性能,弥合器件选型与系统设计之间的鸿沟。

info6的博客 758

git bisect 使用二分法查找引入错误的提交

也就是帮我们切换到了 49e2e88 提交的状态,此时直接打开项目中文件,查看是否正确。到 4ba8bd4 经过比对,发现此时还是正确的,那错误一定是下面这部分提交中。到 b680d3e 经过比对,发现此时是错误的,那错误一定是在下面部分提交中。经过比对,发现此时还是错误的,那么错误一定是在下面这一部分提交中。只要找到一个错误的commit就行了,具体从哪开始错的并不关心。经过比对,发现此时是正确的,那错误一定是下面这一部分提交中。使用该命令时,首先告诉它一个已知包含错误的 “坏” 提交。

lq 693

Claude Code 完整使用教程(2026最新版)

《Claude Code 完整使用教程(2026最新版)》摘要: Claude Code 是 Anthropic 公司推出的智能编程工具,通过自然语言对话实现代码编写、调试和重构。本教程基于 v2.1.101 版本,涵盖安装配置、核心功能及最新特性。主要内容包括: 多平台安装方式(macOS/Linux/Windows) 桌面应用专属功能如并行会话、定时任务和语音模式 模型选择指南(Sonnet/Opus/Haiku) 快速入门示例:5分钟创建Node.js项目 核心功能:代码读写、命令执行、Git集成等

程序猿_三产 1万+

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo

本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。

transformer2023的博客 981

Git提交:规范化你的代码历史

在开发过程中,`git commit` 是每个开发者都会频繁使用的命令。一个清晰、规范的提交信息不仅能够提升团队协作效率,还能让代码历史更容易被理解和追溯。

XuanRan的博客 4281

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 1651

Git提交过程中修改某次错误提交,或是修改bug的方法

Git提交过程中修改某次错误提交,或是修改bug的方法 Git提交过程中不一定每次都是没有问题的,有可能在之前的提交中要修改某次错误提交或是修改bug的,这种情况下就可以使用该方法。

2352

CPRI原理及应用--帧结构

对于CPRI 控制字,协议将1个超帧(256基本帧)的控制数据划分为一个“子通道”,将子通道内超帧内的控制字进行行列划分,分为4列X64行,每64个基本帧组成1列。如下图所示。每个Xs子通道内Ns的定义基本相同,在做控制字设计时,主要已Xs和Ns和X.Y.Z开展控制字映射。

u014035968的博客 2325

硬件测试实战笔记:SI/PI 到底测什么,怎么测?一文讲清

点选错了,数据越精确越误导。

qq_52293640的博客 245

Git bisect 命令帮助定位首次引入错误的提交

​​git bisect​​ 命令通过查看中点,然后由你来决定它是提交列表的新起点(即 “坏提交” )还是新终点(即 “好提交”),进而来缩小查找范围,如此在几次查找中你可以就能定位到有错误的提交。它会自动地确认当前范围的中点,在这个中点上进行测试,然后要求你确定那次提交是一个 好提交good commit 还是一个 坏提交bad commit,然后它会重复这一“二分查找”的过程,直到你找到首次引入错误的那一次提交。同样地,如果某一提交不能通过,则使用 ​​git bisect bad​​ 命令标记。

Free雅轩的博客 201

全球APN信息汇总

全球APN信息,电信APN,移动APN,联通APN,台湾APN,马来西亚APN,俄罗斯APN,日本APN,泰国APN,美国APN,英国APN,法国APN,德国APN,意大利APN,葡萄牙APN,土耳其APN,荷兰APN,丹麦APN,比利时APN,爱尔兰APN,新加坡APN,越南APN,老挝APN,菲律宾APN,印尼APN,泰国APN,柬埔寨APN,巴基斯坦APN,印度APN,奥地利APN,保加利亚APN,捷克APN,立陶宛APN,罗马尼亚APN,挪威APN,希腊APN,匈牙利APN,瑞士APN,乌克兰APN

renkai721的专栏 2796

bisect git 使用_git工具之使用git调试

GIT提供一些工具来帮助你调试项目中遇到的问题文件标注你在追踪代码缺陷想知道是谁在什么时候引入了缺陷代码。文件标注工具能用来显示文件中对每一行进行修改的最近一次提交。1.$git blame -L 12,22 file1.java^4832fe2 (xiao.fan 2017-08-2110:31:28 -0700 12) def show(tree = 'master')^4832fe2 (x...

weixin_39938165的博客 140

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bisect git 使用_GIT中的二分查找(GIT BISECT)

用git管理的代码仓库,如果发现引入的新的bug,则可以使用 “git bisect” 来进行二分查找,从而定位是到引入bug的commit。这也特别是Linux、KVM、QEMU等开源社区中大家最常用的方法。当有bug被fix时,也可以同样使用”git bisect”来二分查找fix了这个bug的commit。不过,由于”git bisect”最初是用于寻找引入bug的坏点而不是fix bug的...

weixin_39946657的博客 361

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

bisect git 使用_GIT中的二分查找(GITBISECT)

用git管理的代码仓库,如果发现引入的新的bug,则可以使用 “git bisect” 来进行二分查找,从而定位是到引入bug的commit。这也特别是Linux、KVM、QEMU等开源社区中大家最常用的方法。当有bug被fix时,也可以同样使用”git bisect”来二分查找fix了这个bug的commit。不过,由于”git bisect”最初是用于寻找引入bug的坏点而不是fix bug的...

weixin_34611277的博客 340

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Git提交规范详解

Git提交规范详解

一起coding,一起嗨。 3625

当内核调试过程中出现bug的调试流程

uname -aprintk()日志级别(如KERN_ERR)决定消息是否显示到控制台。dmesgsyslogdklogdaddr2line其中oops打印中有一个信号值:除了上述 1-15 的标准信号外,还有实时信号(SIGRTMIN 到 SIGRTMAX), 实时信号提供了更可靠的信号传递机制,可以携带数据,并且支持排队,适合用于对信号处理及时性和准确性要求较高的场景。

m0_74186706的博客 2594

本地dev 分支往远程dev分支提交_git lesson13 Bug分支

软件开发中,bug像家常便饭一样。有了bug我们就要去修复。在Git中由于分支很强大,所以,每个bug都可以临时创建一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。比如,当你接到一个修复xx功能的bug任务时,很自然地,我们通过创建issue-xx分支来修复它,但是此时你是在自己分支上做着开发的事情呢,并且还每到可以提交的地步,估计还得需要一段时间,而这个bug是临时的bug需要第一...

weixin_39634443的博客 132

高级 Git 指南:Git Stash、Reset、Rebase 等

每个开发人员都应该对版本控制有很好的了解,而 Git 已经成为软件开发中版本控制的事实标准。但是,开发人员通常只学习一些简单的命令,而忽略了 Git 历史的强大功能以及 Git 可以使您更有效率的其他事情。例如,使用 Git 使用.我参加了 Git 在线高级课程(通过 Github),并继续与 Github 一起教授初学者的 Git 课程。当我注意到关于我最喜欢的 Git 功能的技术文章不多时,我抓住机会与我的开发人员分享它。在本文中,您将学习如何利用以下高级 Git 功能:Git stash 使您无需提交

Meta.Qing的博客 2025

使用Git提交文件(包括安装Git以及使用Git)

本文详细介绍了Git在Windows系统下的安装步骤和使用方法。安装部分详解了从下载到配置的15个步骤,包括组件选择、默认编辑器设置、分支命名、HTTPS传输方式等配置项。使用部分指导如何通过Git Bash完成文件上传:包括初始化仓库、添加文件到暂存区、提交更改、关联远程仓库和推送代码等操作流程,并记录了文件大小限制等常见问题的处理经验。文章特别提醒跨平台项目配置注意事项,并标注了安装教程的引用来源。全文内容详实,针对Git新手提供了完整的操作指南。

m0_73707265的博客 2260
上一篇: 开发工具: git 12、远程和本地同时撤回分支合并操作
下一篇: 开发工具:静态代码扫描工具sonarqube
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值