git bisect 查找引入bug的提交记录

发布时间 2023-11-24 22:08:01作者: 箫笛

它的原理就是将代码提交的历史,按照两分法不断缩小定位。就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。

step 1: 查找提交记录, 找到可能引入错误的提交记录区间

git log --pretty=oneline

step 2: 开始使用git bisect 启动二分查找

git bisect start <latest> <oldest>
git bisect start HEAD <oldest> # 从当前记录开始的话,使用HEAD 代替commit id

step 3: 使用git bisect good 或者 git bisect bad 进行标记

git bisect good
git bisect bad

  • 此时代码被回退到两个提交记录中间的一个记录,然后测试代码
  • 如果代码依旧有bug,则使用 git bisect bad 进行标记, 代码会继续回退到区间的1/4处的那条记录
  • 如果代码bug消失, 则使用 git bisect good 进行标记, 代码会继续回退到区间的 3/4处的那条记录
  • 然后继续测试代码,执行git bisect good 或者 git bisect bad 直到找到出现问题的那条记录

step 4: 使用git bisect reset 恢复代码到最近的那条记录

git bisect reset