遇到“之前正常、现在坏了”的回归时,git bisect 可以把范围二分缩小;如果有一个能返回成功或失败的检查脚本,还能让它自动跑完。
环境:Git 2.25+,项目里准备好一个退出码可靠的脚本。示例假设 scripts/check-regression.sh 返回 0 表示通过、非 0 表示失败:
git bisect start
git bisect bad HEAD
git bisect good v1.4.0
git bisect run ./scripts/check-regression.sh
命令结束后 Git 会停在第一个导致检查失败的提交附近,并打印 bisect 结果。确认完可以恢复工作区:
git bisect reset
脚本最好只依赖仓库里的固定命令,别把网络请求或不稳定的环境状态带进去;否则同一个提交可能每次得到不同结果。