您当前的位置: 首页 >  git

寒冰屋

暂无认证

  • 1浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

在Git中找到破坏测试的提交

寒冰屋 发布时间:2021-07-08 21:45:28 ,浏览量:1

目录

设想

场景详解

解决方案的详细描述

案例1——手动验证提交

案例2——提交的自动验证

分步指南

案例1——手动验证提交

案例2——提交的自动验证

测试你的知识

额外的Git材料

Git在调试代码时提供了很好的支持。本教程向您展示了它是如何工作的。

设想

找到第一个损坏的git commit。

场景详解

但是,git的主要目的是版本控制,它也可用于调试。

你在系统中发现了一个错误,你的前两个问题当然是:谁做的,什么时候做的?

让git帮你快速搞定。

解决方案的详细描述 案例1——手动验证提交

如果您没有自动验证提交是否包含错误的方法,请遵循案例1。

解决方案将是git bisect。您可以使用命令git bisect start进入bisect模式。

然后您必须将当前提交标记为错误,因为它包含错误。输入git bisect bad命令。作为下一步,您必须标记最后一个已知的良好提交,即错误仍然不存在的提交。为此,您可能需要尝试多次提交。但是如果你记得它在2天前还在工作,那么就选择当天的提交。您可以检出每个提交进行测试。一旦你找到一个好的提交,使用命令git bisect good hash_of_the_good_commit。如果当前head是好的提交,则可以从命令末尾跳过哈希。

现在git bisect将检查一些提交。确定它们是否包含错误,并用git bisect good或git bisect bad标记它们。经过几个步骤,Git bisect会告诉你第一个好的提交。如果你认为你犯了一个错误,你可以随时重新启动bisect进程,只需输入git bisect reset即可。

案例2——提交的自动验证

如果您有一个脚本或任何可执行文件可以确定错误是否存在,则可以加快此过程。您甚至可以使用测试框架。重点只是如果错误不存在,可执行文件应返回0,如果存在错误,则返回任何其他内容。

与情况1类似,使用命令git bisect start进入bisect模式。

然后您必须将当前提交标记为错误,因为它包含错误。输入git bisect bad命令。作为下一步,您必须标记最后一个已知的良好提交,即错误仍然不存在的提交。

一旦你标记了一个好的和一个坏的提交,只需使用命令git bisect run path_to_your_executable。在这里,可执行文件既可以是一个独立的脚本,也可以是对带有一些参数的测试框架的调用。

在这一步之后,git bisect会向你展示第一个错误的提交。

分步指南 案例1——手动验证提交
  1. 输入git bisect start——它开始二等分过程
  2. 输入git bisect bad——它将当前提交标记为“坏”
  3. 输入git bisect good hash_of_last_working_commit——将最后一次提交标记为“good”,其中您确定该错误不存在
  4. 现在git bisect将检出当前和最后一次良好提交之间的提交。编译它并测试它。如果存在错误,请键入git bisect bad,否则键入git bisect good。
  5. 重复第4步,直到找不到提交
案例2——提交的自动验证
  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
测试你的知识

您可以在这里测试您的知识:

  • https://github.com/lmarcell/git_practical_exercises_bisect
额外的Git材料

您可以在以下电子书中找到更多与git相关的有用信息:

  • https://leanpub.com/practicalguidetoversioncontrolwithgit/

https://www.codeproject.com/Tips/5301971/Find-the-Commit-which-Broke-the-Test-in-Git

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0453s