在我们每个人独立开发项目的时候,都会不知不觉的用到版本控制,只是我们并不知道“版本控制”这个名词,没有过多的在意~
比如我要做一个数字电压表的项目,该项目要实现的功能是采集0-5V电压并显示在OLED屏幕上,其芯片选型如下:
STC89C52RC
;ADC0832
;0.96'OLED(IIC)
;首先使用公板(开发板)开发软件程序,大致开发流程如下:
所以项目文件夹安排如下:
不经意间,我们手动实现了该项目的版本控制,每个文件夹就是一个版本,这样做的好处是什么呢?
提高代码重用性
比如其中的01-bsp_uart_tx
文件夹,实现了串口发送的独立功能,当下次项目中需要时,可以直接拷贝过去而无需重写;
方便版本回退
(重点)
当编写第三个功能03-adc0832+uart+oled
的时候,因为思路不清晰导致代码出错,这个时候如果将新添加的代码都找到删除,工作量非常大,而且效率极低,有了版本控制,我们可以直接在02-adc0832+uart
的基础上重新编写;在公板上验证程序无误后,便可以转入硬件开发:设计原理图,绘制PCB,生产焊接调试等工作,同样,在绘制原理图和PCB时,我们依然可以使用版本控制,在后续会有专门的一篇文章简述电路图的版本控制,此处不作赘述。
在上一节中我们通过多个文件夹的方式手动实现了版本控制,但是该方式也有一个非常大的缺点:
为了解决这一问题,诞生的主流的版本控制软件:
使用版本控制软件可以解决这一大问题并且带来许多其他的优点,诸如:
继续拿上面的项目为例来说明版本控制软件的多人协作优势~
假设:
A完成测试后将main.c
文件提交到公共服务器上,当B提交main.c
后,公有服务器上A提交的main.c
被B提交的文件所覆盖。
使用版本控制软件即可很好的解决这一问题,并且具有以下优势:
协同修改
权限管理
历史记录