Categories: DevOpsGit

git bisect命令教程

git bisect命令教程

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

git bisect原理

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


手动模式

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将向您显示令人出问题的的提交。

5.0
01
systemctl命令详解
devops最佳实践
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

CrowdStrike是一个AI云原生平台

CrowdStrike是全球网…

2天 ago

Tabnine是一款AI编程助手

Tabnine是一款最新的AI…

3天 ago

Adrenaline一个AI开发工具

Adrenaline是一个革命…

3天 ago

Kubeflow一个简化Kubernetes学习工作流程工具

在机器学习(ML)领域,有效地…

3天 ago

CodiumAI一个AI测试工具

CodiumAI不完全依赖于手…

3天 ago