Git 基础

Git是什么

  • 引言

    首先在了解什么是git之前,有必要先要知道什么是版本控制。版本控制,顾名思义,就是对某个事件的版本进行控制。假设你是一名设计师:alien:,希望能够记录保存某件作品的所有版本以及各个版本之间的差异,采用版本控制系统(VCS)将会是你不二的选择。因为这样你可以任意地查看、回退到任一个版本,并对其修改,这一操作是递归式的,所以不要担心数据的丢失,就算你乱改一通也可以回到你想要的任何时刻,前提是那个时刻你要做修改记录,毕竟VCS也不知道你要保存哪个版本。
  • VCS

    没错,Git也是一种VCS。但是Git却又不是普通的VCS。在最早期,人们使用复制文件再加上标注的方式来做版本控制,但是很明显这种方式不够妥当容易出错(毕竟人不是机器,不能记住所有事情)。随后,就有人想出了使用数据库来记录文件每次更新的差异,工作原理就是在硬盘上记录每次修改的之后前后的差异,这个差异称为补丁,通过补丁就能计算出各个版本的文件内容,这就是本地版本控制系统。再后来人们就想如何在不同的设备机器上来进行协同工作,于是集中化的版本控制系统就诞生了,其中比较出名的就有广为人知的SVN。集中化的版本控制系统(CVCS)把文件集中到一个单一的集中管理的服务器,保存所有文件的修订,而协同工作的人每次只需要取出最新的文件或者提交更新。
     
    事情总会有好坏,CVCS又一个显而易见的问题,就是单点管理的服务器故障了,将会可能带来灾难性的后果。试想,存储文件的服务器硬盘由于某种原因坏了,而又没有做任何备份,很不幸所有的数据以及变更历史都会消失,剩下只有保存在各个客户端的单独快照。
     
    于是分布式的版本管理系统(DVCS)就问世了。和CVCS最大的区别就是,DVCS的客户端会把整个代码仓库镜像下来,而不是只保存最新的文件快照。
  • Git介绍

    伟大的Linus在Linux内核开发过程中每天都要接受来自世界各地代码提交,都要自己手工code review最后再手工merge code。即便是Linus,也不能忍受这种令人痛楚的事情,于是找到当时的一个叫做BikKeeper的公司来帮助管理和维护代码。好景不长,BikKeeper的工程师发现了Linux的开发者试图侵入公司的内部网络,结果可想而知。可是我们的大神Linus再次用实力告诉你什么叫做牛逼、什么叫无敌。他花了两周整理思路并且完整开发了一套分布式的版本管理系统,没错就是Git的原型。

Git基础认识

直接记录快照 📷

CVCS不同的是,Git是会记录每次提交更新后的整个文件快照和快照索引,这样就形成了一个类似文件的快照流的东东。

本地操作,速度飞起 🚀

因为Git会在每个客户端分布镜像整个仓库的特性,让几乎所有操作都可以本地化,就算暂时没有网络服务或者 VPN你也可以进行 差异比较版本更新提交 等一系列工作。

保证数据完整性 📌

Git会为每次的要存储的数据进行校验和,采用SHA-1散列算法。具体会在Git底层原理讲解。Git会根据hashvalue来索引数据,所有如果数据的任何变化都瞒不过Git。hash解释

一般只添加数据 🔖

对于正常的Git操作,只会向着Git仓库添加数据,所以不要担心数据的丢失、弄乱的问题,你可以放心的折腾。具体情况会在Git底层原理讲解。

三种状态 🍡

重点来了、重点来了、重点来了
三种状态分别是:已修改 已暂存 已提交
首先来介绍下Git的三个工作区域:

  • 工作目录
    从Git数据仓库中提取出来的文件,放在硬盘上供你使用修改。
  • 暂存区域
    保存了下次提交的文件信息列表。
  • Git仓库
    保存所有元数据和对象数据库的地方,这很重要,其实执行git clone就是克隆的这里的数据。

所以基本的git操作流程就如下了:

  1. 在工作目录修改文件。
  2. 暂存文件,将文件快照放入暂存区域。
  3. 提交更新,将暂存区的文件快照永久存储到Git仓库目录下。

到这里,三种状态的解释就不言而喻了。(🍺不要说不知道)

总结

本章节对Git的由来历史以及基础认知做了简单介绍,具体的内容可以去Git官网详细了解。谢谢大家的观看,欢迎大家来给我提issue,也别忘了给我一颗star ✨。


©Written By flyaooo