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