高级GIT教程-如何使用GIT调试代码?
目录
介绍
找出是谁提出了犯罪界限
查找第一个被破坏的提交
自动化搜索过程
摘要
GIT是一个版本控制系统,无论使用哪种编程语言,它都可以为您提供强大的调试代码支持。在这篇文章中,我们将看到一些内置的git命令,如果项目中出现问题,这些命令可以使您的生活更轻松。
介绍
不幸的是,每个软件开发人员都知道事情经常出错。某些东西破坏了构建,另一些东西破坏了测试。有人进行了不符合编码准则等的更改。
在这种情况下,很难找出问题所在,有时需要很长时间和数天的调试时间。
幸运的是,Git在这种情况下也可以提供帮助。让我们看一些内置的Git命令,如果项目中出现问题,这些命令可以使您的生活更轻松。
找出是谁提出了犯罪界限
您正在阅读代码并找到一行。“到底是谁干的?” ——这是你的第一个问题。也许您不了解该行的目的,或者未遵循编码准则,或者这是错误的根本原因。您可以做的第一件事是检查该文件的git日志,并找出哪个提交包含相关更改。这可能非常耗时,特别是如果文件的历史很长,并且相关更改在很久以前就发生了。
还有另一个更有效的解决方案:git blame。
只需输入git blame filename。它将为您显示每一行,哪个提交是修改它的最后一个。
这样,很容易找出是谁进行了更改以及其目的是什么。
查找第一个被破坏的提交
您在代码中发现了一个错误。您知道一周前它还不存在,并且您还不知道确切的根本原因。如果您知道哪个提交引入了该错误,将会很有帮助,可以节省大量的调试时间。
在这种情况下,Git bisect是最好的解决方案。Git bisect是提交历史记录中的二进制搜索方法。它甚至可以处理合并提交。让我们看看它是如何工作的:
- 键入git bisect start——启动 bisect进程
- 键入git bisect bad——将当前提交标记为“bad”
- 键入git bisect good hash_of_the_last_working_commit——在您确定不存在该错误的位置,将最后一次提交标记为“good”
- 现在git bisect将检出介于当前和最后一次良好提交之间的提交。编译并测试。如果存在该错误,请键入git bisect bad,否则键入git bisect good。
- 重复步骤4,直到找不到提交为止
感谢二进制搜索的强大功能,它是查找破坏的提交的一种非常快速的方法。
如果错误不一致,可能会导致此方法出现问题,它会随机出现在某些提交中。
自动化搜索过程
手动测试提交可能很耗时。
幸运的是,它可以自动化。Git bisect还支持运行自动化测试。
- 实现一个测试,如果不存在该错误,则返回0,如果存在该错误,则返回非零(大多数测试框架已经以这种方式工作,因此在大多数情况下实现一些简单的单元测试就足够了)
- 键入git bisect start
- 键入git bisect bad
- 键入git bisect good hash_of_last_working_commit
- 键入git bisect run your_test
此方法将在存在您的错误的位置找到第一个提交。
摘要
当您必须找出导致错误的根本原因时,git blame和git guilty都非常有用。如果您足够频繁地进行提交,它可能比使用传统的调试方法快得多。
高级GIT教程-如何使用GIT调试代码?相关推荐
- Git教程--如何安装Git 如何高效地使用Git 合理使用Git分支
原作者:杰森科茨 翻译&转载:https://www.digitalocean.com/community/tutorials/how-to-use-git-effectively 介绍 现 ...
- Git教程 | (9) 自定义Git和使用SourceTree
原文地址 目录 1. 自定义Git 2. 忽略特殊文件 3. 配置别名 4. 搭建Git服务器 5. 使用SourceTree 6. 总结 1. 自定义Git 在安装Git一节中,我们已经配置了use ...
- 【git教程】学习git是为了使用GitHub
第一次了解到git的我根据教程整理的笔记,如果后续有继续学习,会更新. 初识git要认识的指令 在此之前到官网下载安装git,按默认配置就好. 然后打开git bash输入教程指令. reflog能够 ...
- 一份你女朋友都能读懂的 Git 教程,还不赶紧学起来!
点击上方"IT平头哥联盟",选择"置顶或者星标" 你的关注意义重大! 用游戏的方式来学习,是一种有趣而高效的方式. 从刚接触电脑时的打字练习软件 金山打字通,到 ...
- idea 使用 git 教程
idea 使用 git 教程 1.下载 git 下载地址: https://git-scm.com/download/win 64-bit Git for Windows Portable(简单版本) ...
- 史上最简单的git教程搭配Github和Gitee一起食用更佳
史上最简单的git教程 开始之前 git的最简单使用 1. 安装 2. 配置 2.1 用户信息 3. 最基本使用 Github 1. 首先你需要一个账号 2. 你需要一个仓库 Gitee 开始之前 g ...
- 廖雪峰的GIT教程-读书笔记
文章目录 廖雪峰的GIT教程 什么是GIT 集中式vs分布式版本控制系统 分支管理 创建版本库 GIT的版本回退 工作区和暂存区 工作区(Working Directory) 版本库(Reposito ...
- [廖雪峰Git教程]知识点整理
Git 删除本地分支和远程分支 git branch -d test-2020 #删除本地分支 git push origin --delete test-2020 #删除远程分支git branch ...
- git gui怎么拉取项目代码_Git可视化极简易教程 —— Git GUI使用方法
前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...
最新文章
- Access和SQL server开启表间关系,并实现更新或删除母表数据自动更新或删除子表数据...
- 心动警告!你有一份礼包待领取→
- python笔记之if练习
- Cocos2d-x 3.0 简捷的物理引擎
- linux飞行模式自动开机,解决 win10飞行模式 无限自动开关 无法关闭
- js 获取子节点个数
- 用计算机弹假面骑士build,假面骑士build中只有资深粉丝才知道的梗第一弹
- 计算机系统确认的gmp附录,马义岭--中国GMP 附录确认与验证计算机化系统.pdf
- 查看CentOS版本信息
- IOS微信分享调起微信后立刻返回到app中无法分享的问题
- php代码访问记录系统,对某PHP发卡系统代码审计记录
- 百度网盘:未知错误播放失败1000
- 12个免费logo生成器
- 丢番图(Diophantine)方程MATLAB求解
- 要跳过磁盘检查,请在5秒内按任意键如何解决
- Linux 下的Chm 文件阅读器
- xxx is not a function
- UltraISO制作大于4G文件的光盘映像可启动U盘
- python应用seo_SEO快排技术和应用技术编程大全
- 无限循环抛出 No method found for class [B 这个异常
热门文章
- python绘制折线图先对数据进行处理_python气象数据分析并绘制折线图-女性时尚流行美容健康娱乐mv-ida网...
- 泰坦尼克号数据集_机器学习-预测泰坦尼克号生存概率
- zipkin使用_我的Spring Cloud(十):Zipkin 服务跟踪
- 设计师要的各式各样的设计软件插件都整理好了!
- 平面设计模板素材|越发流行的霓虹渐变趋势
- java学习笔记_2020全网最全Java面试题,学习笔记!
- net空间一次购买终身使用_net域名与org域名哪个投资价值更高?
- w10自动删除文件怎么关了_清理win10系统垃圾方法,自动更新文件删除介绍
- .sln vcxproj vcxproj.filter文件作用(转载)
- Go语言学习Day01