首页 > 技术文章 > git版本控制

huxl1 2020-08-19 12:00 原文

git 理论部分:

 是一个开源的分布式版本管理系统,可以有效的对软件系统版本进行管理,

无论哪种存储系统大体分为三种形式:

 local : 本地 单机存储

 集中式: 有中心节点, 集中式管理

 分布式:分布式在每个节点上都有完整数据

集中式管理与分布式管理区别:

CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

 

集中式版本,版本库都存放在中央服务器上,客户端需要先分别从中央服务器上获取内容,在进行修改后在将自己修改的的版本推送给中央服务器

缺点:

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M~20M的文件就需要10分钟甚至更多时间,这还不得把人给急死啊。

 

 

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件fiel,你的同事也在他的电脑上改了文件file,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。如上图!

Git的功能特性

从一般开发者的角度来看,git有以下功能:

1、 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、  在自己的机器上根据不同的开发目的,创建分支,修改代码

3、  在单机上自己创建的分支上提交代码

4、  在单机上合并分支

5、  把服务器上最新版的代码fetch下来,然后跟自己的主分支合并

6、  再把合并后的版本推到服务器上,

原理:

1)四种基本类型

BLOB:  每个blob代表一个(版本的)文件,blob只包含文件的数据,而忽略文件的其他元数据,如名字、路径、格式等。

TREE:  每个tree代表了一个目录的信息,包含了此目录下的blobs,子目录(对应于子trees),文件名、路径等元数据。因此,对于有子目录的目录,git相当于存储了嵌套的trees。

COMMIT:每个commit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了当次提交时的目录信息。一个commit可以有多个(至少一个)父commits。

TAG:   ag用于给某个上述类型的对象指配一个便于开发者记忆的名字, 通常用于某次commit。

 

git 的基本应用 

1 安装git
# yum install git -y

 

推荐阅读