问题代码定位神器: Git Bisect

在用git管理代码的过程中,经常需要回溯代码提交,找到引入问题的初始提交。git bisect用的人不多,但正好能够帮助我们回溯并测试代码。原文: Debugging Made Easy with Git Bisect

问题代码定位神器: Git Bisect_第1张图片
Git Bisect是什么?

Git bisect是一个功能强大的工具,可以让我们快速找到哪个提交在代码库中引入了问题,手动检查每次提交并进行测试的日子已经一去不复返了!git bisect通过二进制搜索用最少的步骤确定引入问题的确切提交,从而节省了跟踪问题和错误的时间。

Git Bisect如何工作?

git bisect的工作原理:

  • 要求你确认最后一次已知的 正确提交(不包含错误的提交)
  • 要求你识别一个 错误提交(包含错误的提交,通常是 master分支的头部)
  • 反复签出新提交,并要求你测试并识别是好的还是坏的

如下图所示,在每个阶段,基于当前提交是否包含错误,算法使用二分搜索将罪魁祸首的提交缩小到范围A或范围B:

问题代码定位神器: Git Bisect_第2张图片
如何使用?

使用git bisect:

  1. 从顶层工作目录开始,切换到存在错误的分支上
  2. 执行 git bisect start
  3. 执行 git bisect bad将当前提交标记为包含错误
  4. 执行 git bisect good ,标记一个你知道没有问题的提交哈希,比方说,你可以用 git log找到2周前的某个没有问题的提交哈希
  5. Git bisect现在会重复签出提交,直到找到罪魁祸首为止。在每次签出时,通过测试以确定是否存在错误
  6. 如果这次提交中存在错误,执行 git bisect bad。如果没有问题,那就执行 git bisect good
  7. 一旦git bisect找到罪魁祸首,会打印这样的日志:
d046321145678970f1c4191ca3fca822bb7219b7 is the first bad commit
  1. 执行 git bisect reset重置工作树

恭喜你找到了罪魁祸首

结论

总之,git bisect对于任何开发人员的调试工具包来说都是一个至关重要的工具。它允许我们有效定位在代码库中引入错误的提交,从而节省在该过程中的时间和精力。如果还没用过git bisect,强烈建议尝试一下。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

- END -

本文由 mdnice 多平台发布

你可能感兴趣的:(程序人生)