git bisect命令教程

git bisect命令教程

git bisect是一个git命令,可让您找到有问题的git提交。假设您在代码库中遇到了一个错误,并且不确定何时引入该错误。如果您可以找到某次代码可以正常工作的提交,而不可以找到代码无法正常工作的提交,则不必手动一次一次查找有问题的提交;使用git-bisect可以快速定位到错误的提交。

git bisect原理

git bisect的原理是使用折半查找算法来查找引入问题的提交,加快查找的效率。git bisect有两种工作模式,一种是手动模式,一种是自动化模式。

undefined
手动模式

git将开始将修订分为两半,并为您加载它们。它将checkout每个修订,然后询问您提交的好坏。您回答git bisect good或,git bisect bad而git将负责其余的工作。它将使用二进制搜索来快速缩小有问题的提交的范围。

# start up git bisect
git bisect start

# give git a commit where there is not a bug
git bisect good a09c728

# give git a commit where there is a bug
git bisect bad b6a0692

您在“好”和“坏的提交”之间进行的修订数量将确定此过程需要花费多长时间,但与单独检出每个提交相比,它仍将更快。

自动化

使用bisect手动查找错误很快的,但我们也可以将其自动化。您可以将任何脚本传递给git bisect,并让它针对修订列表中的每个提交检查该脚本。脚本失败时应以非零返回状态结束。您的测试套件已经这样做了,因此,如果测试失败,这很容易。

# get it ready
git bisect start
git bisect good c09c728
git bisect bad e6a0692

# give git a command to run against each commit
git bisect run rspec spec/features/my_broken_spec.rb

与以前一样,只有git才能为您处理整个过程。它将checkout每个提交,运行命令并记录其响应。在几分钟之内,git将向您显示令人出问题的的提交。

systemctl命令详解
devops最佳实践