高级GIT教程-如何使用GIT调试代码?

目录

介绍

找出是谁提出了犯罪界限

查找第一个被破坏的提交

自动化搜索过程

摘要


GIT是一个版本控制系统,无论使用哪种编程语言,它都可以为您提供强大的调试代码支持。在这篇文章中,我们将看到一些内置的git命令,如果项目中出现问题,这些命令可以使您的生活更轻松。

介绍

不幸的是,每个软件开发人员都知道事情经常出错。某些东西破坏了构建,另一些东西破坏了测试。有人进行了不符合编码准则等的更改。

在这种情况下,很难找出问题所在,有时需要很长时间和数天的调试时间。

幸运的是,Git在这种情况下也可以提供帮助。让我们看一些内置的Git命令,如果项目中出现问题,这些命令可以使您的生活更轻松。

找出是谁提出了犯罪界限

您正在阅读代码并找到一行。到底是谁干的?” ——这是你的第一个问题。也许您不了解该行的目的,或者未遵循编码准则,或者这是错误的根本原因。您可以做的第一件事是检查该文件的git日志,并找出哪个提交包含相关更改。这可能非常耗时,特别是如果文件的历史很长,并且相关更改在很久以前就发生了。

还有另一个更有效的解决方案:git blame

只需输入git blame filename。它将为您显示每一行,哪个提交是修改它的最后一个。

这样,很容易找出是谁进行了更改以及其目的是什么。

查找第一个被破坏的提交

您在代码中发现了一个错误。您知道一周前它还不存在,并且您还不知道确切的根本原因。如果您知道哪个提交引入了该错误,将会很有帮助,可以节省大量的调试时间。

在这种情况下,Git bisect是最好的解决方案。Git bisect是提交历史记录中的二进制搜索方法。它甚至可以处理合并提交。让我们看看它是如何工作的:

  1. 键入git bisect start——启动 bisect进程
  2. 键入git bisect bad——将当前提交标记为“bad”
  3. 键入git bisect good hash_of_the_last_working_commit——在您确定不存在该错误的位置,将最后一次提交标记为“good”
  4. 现在git bisect将检出介于当前和最后一次良好提交之间的提交。编译并测试。如果存在该错误,请键入git bisect bad,否则键入git bisect good
  5. 重复步骤4,直到找不到提交为止

感谢二进制搜索的强大功能,它是查找破坏的提交的一种非常快速的方法。

如果错误不一致,可能会导致此方法出现问题,它会随机出现在某些提交中。

自动化搜索过程

手动测试提交可能很耗时。

幸运的是,它可以自动化。Git bisect还支持运行自动化测试。

  1. 实现一个测试,如果不存在该错误,则返回0,如果存在该错误,则返回非零(大多数测试框架已经以这种方式工作,因此在大多数情况下实现一些简单的单元测试就足够了)
  2. 键入git bisect start
  3. 键入git bisect bad
  4. 键入git bisect good hash_of_last_working_commit
  5. 键入git bisect run your_test

此方法将在存在您的错误的位置找到第一个提交。

摘要

当您必须找出导致错误的根本原因时,git blamegit guilty都非常有用。如果您足够频繁地进行提交,它可能比使用传统的调试方法快得多。