使用 git bisect 查找引入 bug 的提交
想象一下自己处于这种情况
过去三天,你一直在一个分支上工作。30 次提交之后,你正准备完成你的功能,突然间,你发现应用程序的页脚部分出了问题。你惊慌失措地查看了之前的提交,想看看页脚部分是否有任何变化。事实上,页脚部分根本没动过,你也不知道发生了什么。
这样git bisect
您就可以节省无数个小时来尝试查找引入错误的确切提交,而不必逐个提交。
git bisect
将执行二分查找,以帮助您找到所需的确切提交。如果您不熟悉二分查找,它的基本含义是,每次当您回答一个简单的问题“它显示的提交是否存在 Bug”时,它会将选项一分为二。
如何使用
现在,使用 来启动该过程git bisect start
。执行此操作后什么也不会发生……接下来你需要做的是向 git 提交一个你知道 bug 不存在的提交,或者git bisect good ch4792h2
例如一个“好的”提交。然后输入第二个提交,该提交包含已知 bug 的应用程序实例,换句话说,一个“坏的提交”,例如git bisect bad ke37lw5
完成此操作后,git 会为您检出一个提交,然后您需要回复git bisect good
它所显示的提交是否存在该 bug git bisect bad
。回复后,git 会通过移除另一半提交来缩小搜索范围,然后再次询问您相同的问题。最终,范围缩小到引入 bug 的提交。
就这样!大约 4 到 5 次提交后,你就能找到导致 bug 的提交。现在,这可能更有利于检查 UI 中的变更,因为你可以清楚地看到应用中的某些部分是否正常工作。不过,如果出现问题,这个命令还是值得记住的。
链接:https://dev.to/alejandro_sierra/find-the-commit-that-introduced-a-bug-with-git-bisect-2jgi