git bisect
是一个有用的调试工具。简单来说,git bisect
是一个 git 命令,可以用来追踪代码库中引入错误的具体提交。
如果你能找到代码正常工作的提交和包含错误的提交,你就不必手动追踪有问题的提交。git bisect
命令通过二分查找来帮助你找到有问题的提交。例如,Git 文档中有一个方便的 git bisect
指南,展示了两种使用它的方法。
在使用 Bundler 的项目中,git bisect
需要一些可能不明显的操作才能正常工作。
Gemfile.lock
需要在 git 仓库中,这样每次提交都会加载相同的依赖项。bundle install
,以便安装正确的依赖项并使其可供加载。git reset
。如果 bundle install
或运行测试会导致文件系统发生变化,这将阻止 git checkout
下一个要测试的提交,除非它们被重置。以下是一个运行 rake 任务 spec
的最小示例脚本
#!/usr/bin/env bash
bundle install
bin/rake spec
status=$?
git reset --hard HEAD
exit $status
也可以参考 rubygems/bundler#3726 中的讨论。