Docs header transparent bg

如何使用 git bisect

git bisect 是一个有用的调试工具。简单来说,git bisect 是一个 git 命令,可以用来追踪代码库中引入错误的具体提交。

如果你能找到代码正常工作的提交和包含错误的提交,你就不必手动追踪有问题的提交。git bisect 命令通过二分查找来帮助你找到有问题的提交。例如,Git 文档中有一个方便的 git bisect 指南,展示了两种使用它的方法。

如何在使用 Bundler 的项目中使用 git bisect

在使用 Bundler 的项目中,git bisect 需要一些可能不明显的操作才能正常工作。

  1. Gemfile.lock 需要在 git 仓库中,这样每次提交都会加载相同的依赖项。
  2. 在 bisect 的每个步骤中,都需要先运行 bundle install,以便安装正确的依赖项并使其可供加载。
  3. 在确定提交是好是坏之后,每个步骤都需要 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 中的讨论。

在 GitHub 上编辑此文档,如果您发现错误或注意到有遗漏。