某个提交之后测试开始失败,手动一个个回退挺磨人。仓库里已有能返回 0/非 0 的检查脚本时,可以让 Git 自动二分:
git bisect start
git bisect bad HEAD
git bisect good v1.8.0
git bisect run ./scripts/check-regression.sh
git bisect reset
检查脚本可以先写得很简单:
#!/bin/sh
set -eu
python -m pytest tests/test_cache.py -q
脚本通过返回 0,失败返回非 0;别把安装依赖或改环境的动作混进去。环境:Git 2.x,示例用 Python 3.9+ 和 pytest 7+。bisect run 找到的是第一个让检查失败的提交,跑完记得 git bisect reset 回到原分支。工作区也最好先保持干净,不然切提交时容易被本地改动干扰。