​1. 为什么需要版本控制

在我们每个人独立开发项目的时候,都会不知不觉的用到版本控制,只是我们并不知道“版本控制”这个名词,没有过多的在意~

比如我要做一个数字电压表的项目,该项目要实现的功能是采集0-5V电压并显示在OLED屏幕上,其芯片选型如下:

  • 主控芯片:STC89C52RC
  • AD芯片:ADC0832
  • 显示模块:0.96'OLED(IIC)

首先使用公板(开发板)开发软件程序,大致开发流程如下:

  • 编写STC89C52RC的串口驱动程序,实现串口发送功能,用于后期调试;
  • 编写ADC0832的驱动程序,实现采集电压值并通过串口发送功能
  • 编写OLED的驱动程序,实现电压值实时显示功能

所以项目文件夹安排如下:

不经意间,我们手动实现了该项目的版本控制,每个文件夹就是一个版本,这样做的好处是什么呢?

  • 提高代码重用性
    比如其中的01-bsp_uart_tx文件夹,实现了串口发送的独立功能,当下次项目中需要时,可以直接拷贝过去而无需重写;
  • 方便版本回退(重点)
    当编写第三个功能03-adc0832+uart+oled的时候,因为思路不清晰导致代码出错,这个时候如果将新添加的代码都找到删除,工作量非常大,而且效率极低,有了版本控制,我们可以直接在02-adc0832+uart的基础上重新编写;

在公板上验证程序无误后,便可以转入硬件开发:设计原理图,绘制PCB,生产焊接调试等工作,同样,在绘制原理图和PCB时,我们依然可以使用版本控制,在后续会有专门的一篇文章简述电路图的版本控制,此处不作赘述。

2.为什么需要版本控制工具

在上一节中我们通过多个文件夹的方式手动实现了版本控制,但是该方式也有一个非常大的缺点:

  • 迭代建立文件夹,重复内容多
  • 版本迭代时修改的内容无法查看

为了解决这一问题,诞生的主流的版本控制软件:

  • 集中式版本控制工具:SVN
  • 分布式版本控制工具:Git

使用版本控制软件可以解决这一大问题并且带来许多其他的优点,诸如:

  • 保存了数据当前状态以及之前每一个提交的历史状态,可以回退到任意一个版本节点
  • 在保存每一个版本的文件信息时不重复保存数据,节约存储空间,提高运行效率
  • 可以清楚到看到不同版本间修改的内容
  • 可以多人协作,团队开发

3. 版本控制软件的多人协作优势

继续拿上面的项目为例来说明版本控制软件的多人协作优势~

假设:

  • A同学负责adc0832的驱动实现,在main.c中编写测试函数进行测试;
  • B同学负责OLED的驱动实现,在main.中编写测试函数进行测试;

A完成测试后将main.c文件提交到公共服务器上,当B提交main.c后,公有服务器上A提交的main.c被B提交的文件所覆盖

使用版本控制软件即可很好的解决这一问题,并且具有以下优势:

  • 协同修改
  • 多个人可以修改服务器上的同一个文件,互不影响;
  • 权限管理
  • 对团队中参与开发的人员进行权限控制;
  • 对团队外参与开发的人员贡献的代码进行审核(Git独有);
  • 历史记录
  • 查看修改人、修改时间、修改内容、修改日志;

推荐阅读:

  • STM32CubeMX系列教程
  • TencentOS tiny 正式开源
  • PYNQ上手笔记
  • Linux下开发stm32
  • 工具推荐 | 串口数据可视化
  • 随想 | 嵌入式学习之旅中 ,与野火的点点滴滴~

更多精彩文章及资源,欢迎关注我的微信公众号:『mculover666』。

svn回退到上一个版本_Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例)...相关推荐

  1. svn回退到上一个版本_Git汇总--对象及版本库存储

    下述内容为团队内部分享整理所得,实用性较强,整体性偏差! PS:关于完整的Git内容,请参照之前发表过一系列文章,详见:Git Pro深入浅出(一).Git Pro深入浅出(二).Git Pro深入浅 ...

  2. git 回退上一个版本_Git小白使用教程:详细、显现、真正手把手教!

    不少小伙伴私信问我GitHub怎么使用?今天更一下,希望能帮到你,有问题评论区拍砖交流吧.

  3. git回退到上一个版本:

    1.首先查找版本号:git log 2.确定恢复到指定版本:git reset --hard f5c706a6,f5c706a6为版本号 3.强制将本地代码同步到远程仓库:git push origi ...

  4. git回退历史版本无法上传_Git实用教程(四) | Git本地库操作(查看提交历史、版本前进回退)...

    Git实用教程专栏回顾 Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例) Git实用教程(二) | Git简介及安装详解 Git实用教程(三) | Git本地库操作(仓库初始化. ...

  5. git 回退上一个版本

    git 回退上一个版本 在 Git 中,HEAD 指针指向的是当前版本,也就是最新的 commit id,上一个版本是 HEAD^,上上一个版本就是 HEAD^^,上50个版本可以写成 HEAD~50 ...

  6. git 添加用户名和邮箱_Git实用教程(二) | Git简介及安装详解

    Git实用教程专栏回顾 Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例) 1.Git简介 Git(官网 https://git-scm.com/)是一个免费开源的分布式版本控制系 ...

  7. 如何降低计算机版本,Win10系统如何降级版本的?回退到Windows 10上一个版本的方法...

    在十月份,微软为Windows10系统带来了Win10 1809版本,由于该版本BUG导致了不少问题,例如导致文件被删.桌面文件丢失.电脑没有声音等问题,目前微软已经停止了对该版本的推送.而如果您是已 ...

  8. git 怎么回退已经push的版本_Git版本回退

    Git版本回退 Git中,每次commit提交都会生成一个历史纪录.使用 git log 查看commit历史:1 2 3 4 5 6 7 8 9 10$ git log --oneline ec88 ...

  9. IDEA 使用Git回滚到上一个版本

    IDEA 使用Git回滚到上一个版本 一.版本介绍 目前有两个历史版本: v1 版本号:xxxc7f v2 版本号:xxxbcd 需求:从当前所在的v2跳转到v1 二.选择需要回退的版本 三.选择自己 ...

最新文章

  1. 目标检测任务中的训练宝典 |实用技巧
  2. tcpip卷一二三区别_八年级物理期末试卷(内附初三期末卷)
  3. Spark基础:(六)Spark SQL
  4. Polymorphic form--多态表单
  5. Centos显示-bash-4.1$问题的修复及原因探究
  6. Qt Designer的小部件编辑模式
  7. Java IO(二)——RandomAccessFile
  8. vue 递归创建菜单_如何在Vue中创建类似中等的突出显示菜单
  9. android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
  10. Linux系统上Crontab定时执行教程
  11. hiredis源码分析与简单封装
  12. 疯狂kotlin讲义连载之流程控制——顺序结构与分支结构 二
  13. python支持向量机库_为支持向量机库LIBSVM使用python绑定的示例
  14. 通俗的解释云计算 公有云 私有云 混合云
  15. ubuntu清除dns缓存_如何在Ubuntu上清除DNS缓存
  16. 细数银行7大手续费 这些冤枉钱别再交了
  17. Cell Reports:青年发育过程中脑血流与功能磁共振ALFF耦合
  18. html表单验证spry,Spry验证表单教案
  19. 沧小海的《xilinx的A7系列芯片资源学习笔记》之第一部分:I/O BANK(三)
  20. Python--weather.NO.1---了解tkinter和requests的基本用法

热门文章

  1. 实战:采⽤Sharding-JDBC实现订单表的(两主四从) 分库分表 和 读写分离
  2. 《史上最简单的 SpringCloud 教程》系列
  3. eclipse下添加viplugin插件的方法
  4. Node.js压缩web项目中的js,css和图片
  5. (Command Pattern)命令模式
  6. Unity3d官方测试插件学习-单元测试,集成测试
  7. python模块介绍-asyncore 异步socket处理器
  8. BranchCache实验(1)总部的服务器配置
  9. java对mysql的简单操作——增加数据
  10. do case php,PHP 规范之编程规范