无需登录 数据私有 本地保存

Git Bisect 辅助工具 - 可视化二分法排查提交

17
0
0
0

Git Bisect 可视化工具

二分法排查

模拟 Git Bisect 二分查找过程,快速定位引入 Bug 的提交。标记 Good/Bad 后,工具自动计算下一步测试目标。

  Good(正常)   Bad(有问题)   推荐测试   Skip(跳过) 已排除范围
Bug 隐藏在提交中
当前测试目标:
排查进度
总提交数
20
搜索范围
19
理论最少步数
5
已用步数
0
搜索进度
操作日志

等待操作... 标记第一个 Good 或 Bad 提交开始排查。

对应 Git 命令
git bisect start
git bisect bad HEAD
git bisect good <commit>
git bisect good/bad
git bisect reset
常见问题 & 知识点
Git Bisect 是 Git 内置的二分查找工具,用于快速定位引入 Bug 的提交。它通过不断地在"好"和"坏"提交之间取中间点进行测试,将搜索范围每次减半,从而在大量提交中高效找到问题提交。时间复杂度为 O(log₂n),在 1000 个提交中只需约 10 步即可定位。
基本步骤:
1️⃣ git bisect start 启动二分查找
2️⃣ git bisect bad 标记当前提交有问题
3️⃣ git bisect good <commit> 标记一个已知正常的提交
4️⃣ Git 自动检出中间提交供测试
5️⃣ 测试后标记 git bisect goodgit bisect bad
6️⃣ 重复直到找到引入 Bug 的提交
7️⃣ git bisect reset 结束并回到原分支
二分查找每次将搜索范围减半。如果有 N 个待排查的提交,最多需要 ⌈log₂N⌉ 步。例如:100 个提交约需 7 步,1000 个约需 10 步,10000 个约需 14 步。相比逐個排查的线性方法(最坏 N 步),效率提升巨大。
使用 git bisect skip 跳过当前提交。Git 会智能选择附近的替代提交进行测试。这在提交无法编译、依赖缺失或测试环境不兼容时非常有用。多次跳过可能导致范围不够精确,但仍能得到结果。
可以!使用 git bisect run <script> 命令,传入一个自动化测试脚本。脚本返回 0 表示 good,返回 1-127(除 125 外)表示 bad,返回 125 表示 skip。Git 会自动执行二分查找全过程,无需人工干预,非常适合可自动复现的 Bug。
⚠️ 标记错误:误将 Bad 标为 Good 会导致范围错误,需重启 bisect。
⚠️ 合并提交:在复杂分支历史中,二分查找可能沿非主线路径行进。
⚠️ 中间状态:某些提交可能本身就无法正常工作(如重构中途),需使用 skip。
⚠️ 忘记 reset:排查完成后务必执行 git bisect reset 回到正常状态。