如果某个测试在旧提交通过、现在失败,而且能用一条命令判断成败,可以让 Git 自动二分:
git bisect start
git bisect bad HEAD
git bisect good <最后一个正常提交>
git bisect run sh -c 'python -m pytest tests/test_parser.py -q'
git bisect reset
测试命令返回 0 表示 good,非 0 表示 bad;脚本要尽量稳定,偶发失败会把结果带偏。环境:Git 2.x,示例是 Python 3.9+ / pytest 7+,命令在仓库根目录执行。git bisect run 会切换提交并运行命令,结束后用 git bisect reset 回到原来的分支。