【git] 当项目报错,你想定位是哪个 commit 引入的错误的时候,该怎么做【热度: 650】

关键词:二分法查找错误 commit

确实,当你不确定哪个提交(commit)引入了错误时,Git 提供了一个非常强大的工具 git bisect 来帮助你通过二分法快速定位出问题的提交。这个命令通过逐步缩小导致问题的提交范围,最终帮助你找出导致错误的具体提交。使用方法如下:

如何使用 git bisect

  1. 开始 bisect 会话
    打开终端或命令行,切换到你的项目目录下,然后使用命令开始一个 bisect 会话:
git bisect start
  1. 标记一个坏的提交
    使用下面的命令标记当前最新的提交为'坏'的(假设当前分支上的最新提交包含了错误):
git bisect bad

如果你已经知道一个特定的坏提交,可以指定它:git bisect bad [坏的提交id]

  1. 标记一个好的提交
    接下来,使用以下命令标记一个'好'的提交,即一个没有问题的旧版本:
git bisect good [好的提交id]

这个好的提交应该是你确定不包含当前问题的一次提交。

完成以上步骤之后,git bisect 将自动检出一个中间的提交供你测试。你需要编译(如果必要的话)并测试这个版本,然后根据运行结果告诉 Git 这是好是坏:

  • 如果这个提交版本没有问题,使用 git bisect good
  • 如果这个提交版本有问题,使用 git bisect bad

每次你输入结果后,Git 会继续选择另一个提交进行测试,直至找到第一个'坏'的提交。

结束 bisect 会话

一旦找到了问题提交,别忘了结束 bisect 会话,释放由 git bisect 占用的资源:

git bisect reset

这将会把你的工作目录恢复到 git bisect 开始之前的状态。

注意事项

  • 使用 git bisect 时,确保有足够的测试覆盖,以准确判断某个提交是好是坏。
  • 一旦找到问题提交,你可以通过查看该提交的详情(git show [提交id])来了解更多信息,从而帮助你理解为何会引入错误。

更加详细的介绍, 可以参考下面文章链接

https://juejin.cn/post/7232591499069653051