IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 为什么要使用git,git架构分析 -> 正文阅读

[开发工具]为什么要使用git,git架构分析

前言

本文面向的是像作者一样,是git小白的程序员,很多程序员是不使用git的,这很正常,比如嵌入式程序员,嵌入式程序员一般使用IDE进行开发,比如MDK、IAR等,嵌入式的软件程序相比较互联网的程序,代码量要少很多,功能也相对简单,再加上小厂很多也没有使用git的习惯,所以就会出现前面所说的,很多程序员不使用git。当然啦,git只是一个工具,会与不会也不能代表什么,程序员的能力还是要靠代码来体现的。

git应用场景

git的介绍在网上有太多,就算是不太熟悉git的程序员大概也知道git是一种版本管理工具,那么git存在的意义是什么呢?

场景

一个嵌入式程序员,在不使用git或其他代码版本管理工具之前,对于代码的开发和管理流程一般会这样:

  1. 从0开始先搭出一套hello world级别的工程。
  2. 将1备份,基于备份1,开发功能1,开发完成,测试通过。
  3. 将2备份,基于备份2,开发功能2,开发完成,测试通过。
  4. 以此类推,先备份,基于备份开发新的功能。
  5. 测试发现了bug,也是先将当前程序备份,再给予bug备份,调试开发,

对于使用互联网的程序员来说,上面的过程他们可能不能理解,原因可能如下:

  1. 备份?我们一个工程文件几个G大小,每个功能都备份,磁盘空间得多大?
  2. 为什么不使用git或者svn?
  3. 我们的项目,都是多人协作的,各自开发自己的工作模块,然后再合并,如果靠备份,然后手动合并,不累死,也得累残废。

场景问题分析

为什么会有两种截然不同的习惯?我想有一下原因:

  1. 嵌入式程序员一般都是单兵作战,即一个人负责一个产品的全部功能开发,比如使用stm32开发个小型采集器、传感器或者控制器,一把都是一个人从头到尾负责。
  2. git是是linux之父开发的,多使用于linux环境下,而嵌入式程序员大多数都是基于windows平台的IDE进行功能开发,所以对于git不太熟悉。
  3. git是一个版本管理工具,而且是一种非常优秀的版本管理工具,所以有一定的学习成本,嵌入式程序员习惯使用IDE,对于git的接受程度一般。
  4. 嵌入式程序体量较小,即便备份也占不了太大的空间。

综上,我们分析了一些程序员不使用git的原因。再重复一次,git是一个工具,它能对程序开发起到锦上添花的作用,但是会与不会,用与不用,并不能代表什么。毕竟在git没有出现之前,也是有太多太多的大神级别的程序员的。

git解决了什么

通过前面的场景分析,我们发现了一些痛点,那么git解决了什么呢?
简单的说:

  1. git实现了前面介绍的嵌入式程序员使用的原始方法,即备份功能。git不仅不会对文件备份,还会对所有的修改信息、修改过程进行备份,你几乎可以认为,git就是在你开发的时候,进行了录屏,只要你的注释详细,你可以会滚到任何一个节点。git不仅能够在本地备份,还可以在远程备份。
  2. 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到底是如何保存备份呢?
git跟踪并管理的是修改,而非文件。比如新增一行,这就是一个修改,删除一行也是修改,更改了某些字符,也是修改,删了一些又加了一些,也是修改,创建了一个新文件,也算是一个修改。

本地仓库保存了所有的修改

在本地仓库中,保存了从git init以来所有的修改,没错,这里用到了“所有”,整个生命周期的所有、everything修改,所有的修改对应着所有的commit、所有的分支管理、所有的过程信息。我们可以会滚到任何的一个有记录的节点。

git的强大回滚功能

上面说到,本地仓库保存了所有修改,可能一些人还是会不以为然,会觉得,只要记录过程信息,回滚到以前,也不难啊,功能也谈不上多强大啊。能回到以前,还能回到以后吗?答案是:能。
git不仅能够从当下回滚到以前,还能从以前再次回到当下。, 就是这么神奇,当然神奇回滚机制的背后,是因为本地仓库会一致保存所有修改过程,即便是我们删掉一个分支,想再回来,也是可以的。因为所有的过程信息都在本地仓库中保存着,也就是本地仓库的体积只会越来越大,并不会伴随着我们删除代码而减小,反而是,我们删除的代码,会在本地仓库中存储下来,等待我们需要的时候再恢复。所以本地仓库的体积会伴随着程序的生命周期,越来越大。

小结

  1. git是一个优秀的代码版本管理工具,所谓版本并不仅仅指程序的版本管理,更多的是代码整个生命周期内所有的过程修改信息管理。
  2. 本地仓库保存了所有的过程修改信息,即便是删除代码操作,对于本地仓库来说,也是新增修改操作,会将删除的那部分代码,存储到本地仓库,方便程序员后悔,进行回滚。
  3. 本地仓库会伴随着代码开发的生命周期,越来越大,没错,只要不手动删除,只会越来越大。因为那里面保存了所有的过程信息。
  4. git可以让程序员进行无限次悔棋,可以回滚到以前,还可以从以前回滚到当下。
  5. git天生就具备多人协作开发功能,方便团队开发。

最后,嵌入式程序员如果可以,可以尝试使用git,锦上添花,要比些readme来记录要方便的多。
git教程推荐:git教程

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:33:04  更:2021-11-22 12:33:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/24 1:47:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计