赞
踩
本文面向的是像作者一样,是git小白的程序员,很多程序员是不使用git的,这很正常,比如嵌入式程序员,嵌入式程序员一般使用IDE进行开发,比如MDK、IAR等,嵌入式的软件程序相比较互联网的程序,代码量要少很多,功能也相对简单,再加上小厂很多也没有使用git的习惯,所以就会出现前面所说的,很多程序员不使用git。当然啦,git只是一个工具,会与不会也不能代表什么,程序员的能力还是要靠代码来体现的。
git的介绍在网上有太多,就算是不太熟悉git的程序员大概也知道git是一种版本管理工具,那么git存在的意义是什么呢?
一个嵌入式程序员,在不使用git或其他代码版本管理工具之前,对于代码的开发和管理流程一般会这样:
- 从0开始先搭出一套hello world级别的工程。
- 将1备份,基于备份1,开发功能1,开发完成,测试通过。
- 将2备份,基于备份2,开发功能2,开发完成,测试通过。
- 以此类推,先备份,基于备份开发新的功能。
- 测试发现了bug,也是先将当前程序备份,再给予bug备份,调试开发,
对于使用互联网的程序员来说,上面的过程他们可能不能理解,原因可能如下:
- 备份?我们一个工程文件几个G大小,每个功能都备份,磁盘空间得多大?
- 为什么不使用git或者svn?
- 我们的项目,都是多人协作的,各自开发自己的工作模块,然后再合并,如果靠备份,然后手动合并,不累死,也得累残废。
为什么会有两种截然不同的习惯?我想有一下原因:
- 嵌入式程序员一般都是单兵作战,即一个人负责一个产品的全部功能开发,比如使用stm32开发个小型采集器、传感器或者控制器,一把都是一个人从头到尾负责。
- git是是linux之父开发的,多使用于linux环境下,而嵌入式程序员大多数都是基于windows平台的IDE进行功能开发,所以对于git不太熟悉。
- git是一个版本管理工具,而且是一种非常优秀的版本管理工具,所以有一定的学习成本,嵌入式程序员习惯使用IDE,对于git的接受程度一般。
- 嵌入式程序体量较小,即便备份也占不了太大的空间。
综上,我们分析了一些程序员不使用git的原因。再重复一次,git是一个工具,它能对程序开发起到锦上添花的作用,但是会与不会,用与不用,并不能代表什么。毕竟在git没有出现之前,也是有太多太多的大神级别的程序员的。
通过前面的场景分析,我们发现了一些痛点,那么git解决了什么呢?
简单的说:
- git实现了前面介绍的嵌入式程序员使用的原始方法,即备份功能。git不仅不会对文件备份,还会对所有的修改信息、修改过程进行备份,你几乎可以认为,git就是在你开发的时候,进行了录屏,只要你的注释详细,你可以会滚到任何一个节点。git不仅能够在本地备份,还可以在远程备份。
- git另外一个功能就是提供了多人协作的开发方式,代码的合并都使用工具来实现,只要头脑清醒,代码的合并不会出现任何遗漏。
前面说的git的应用场景,对于git小白来说,还是会有些疑惑,说的那么好,理解起来好像还是很抽象,下面我们就简单的分析一下git的设计架构,来帮助理解。
上图是git的整体架构,以及各部分相关的一些主要命令,我们简单的介绍一下:
所谓工作区,就是工作的区域,也就是本地的工作目录,可以理解为我们的工程文件目录。工作区的内容会包含修改内容(未add)、提交到暂存区和版本库(当前提交点)的内容。
stage area,又称为索引区,这是git架构中非常重要的一个概念,是过渡阶段存放的地方,是我们修改提交版本库之前的一个过渡地方,git add命令就是将工作区内的修改内容,添加到暂存区。
git最核心的功能、概念。是版本控制系统的仓库,存在于本地,当执行git commit命令后,会将暂存区的内容加载到本地仓库,然后会清空暂存区。可以使用merge或者rebase将远程仓库副本合并到本地仓库。
于本地仓库概念一致,只不过存放在远程服务器,可用于远程协作。
可以理解为存在于本地的远程仓库缓存,如果需要更新,可以使用git fetch/pull命令获取远程仓库内容。
从前面的git架构分析我们了解到了git的架构,对于git小白来说,可能还是感觉有点抽象,还差一点就能清晰了,那么这一点是什么呢?答案就在“本地仓库”里。
git是一个版本管理工具,所谓版本其实最重要的功能就是保存备份,那么git到底是如何保存备份呢?
git跟踪并管理的是修改,而非文件。比如新增一行,这就是一个修改,删除一行也是修改,更改了某些字符,也是修改,删了一些又加了一些,也是修改,创建了一个新文件,也算是一个修改。
在本地仓库中,保存了从git init以来所有的修改,没错,这里用到了“所有”,整个生命周期的所有、everything修改,所有的修改对应着所有的commit、所有的分支管理、所有的过程信息。我们可以会滚到任何的一个有记录的节点。
上面说到,本地仓库保存了所有修改,可能一些人还是会不以为然,会觉得,只要记录过程信息,回滚到以前,也不难啊,功能也谈不上多强大啊。能回到以前,还能回到以后吗?答案是:能。
git不仅能够从当下回滚到以前,还能从以前再次回到当下。, 就是这么神奇,当然神奇回滚机制的背后,是因为本地仓库会一致保存所有修改过程,即便是我们删掉一个分支,想再回来,也是可以的。因为所有的过程信息都在本地仓库中保存着,也就是本地仓库的体积只会越来越大,并不会伴随着我们删除代码而减小,反而是,我们删除的代码,会在本地仓库中存储下来,等待我们需要的时候再恢复。所以本地仓库的体积会伴随着程序的生命周期,越来越大。
最后,嵌入式程序员如果可以,可以尝试使用git,锦上添花,要比些readme来记录要方便的多。
git教程推荐:git教程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。