Welcome everyone

关于git的那些事儿

java 汪明鑫 344浏览 0评论

认识Git

有CVS、SVN这些免费的版本控制系统,为什么还需要git呢?
因为牛人Linux之父Linus认为CVS、SVN不太彳亍,第一速度太慢,性能不好,第二,必须联网才能使用。
于是乎,Git诞生了,大佬就是这么任性说写就写,Linus花了两周时间自己用C写了一个分布式版本控制系统,
Linux系统的源码就由Git管理了。

git的优势
1,分布式管理,去中心化
2,不必联网
3,强大的分支管理

总而言之,Git甩SVN几条街

随着git和github的诞生,Git已成为最快、最简单也最流行的分布式版本控制系统。

 

集中式 VS 分布式

我们为什么关注版本控制?

版本控制记录了文件的变换。

 

起初,是本地版本控制

在本地电脑,把文件拷贝到以一个目录下,这样操作太容易出错

于是开发出了本地VCSs,有一个数据库专门保存文件变化

 

但是上面的一种只在自己电脑下开发,现实的开发往往需要多人的合作,于是聪明的大佬们又研发出了集中式版本控制系统

Centralized Version Control Systems (CVCSs)

有一个服务器专门存放文件,许多客户端从中拉取文件。

但是这样的设计也有一个弊端,如果这个服务器发生宕机等故障并长时间没有恢复,当场gg,

所有客户端将无法提交更新、还原、对比等,也就无法协同工作。如果磁盘发生故障,信息尚无备份,还会有数据丢失的风险。

 

SVN就是集中式的版本控制系统,使用svn时,每次干活之前,需要先从中央服务器(服务端)取出最新的版本,然后开始工作,干完活了,工作完后推送给中央服务器。此时的中央服务器就好比是一个图书馆,如果你要修改一本书,需要先从图书馆借出来,然后回到自己家修改,改完之后,需要在送回到图书馆。

 

由于集中式版本控制系统的一些弊端,分布式版本控制系统孕育而生。

 

分布式版本控制系统是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不再需要联网。开始工作前,在客户端克隆出完整的代码仓库,然后就可以在家、在公交车等等随心所欲地修改代码并提交了,提交到本地电脑,等到有网的时候就可以一次性地将本地仓库推送到远端仓库(临时中心服务器)中,这样一来,每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。

 

特点:

本地客户机进行操作,离线工作,快速。

安全性高,每个人电脑里都有完整的版本库,一个人的电脑换了复制其他人的一份就可以了。

原子性提交,提交不会被打断(git)。

 

记录变化 VS 快照

大多数的版本控制系统都是记录文件的变化,
他们记录一组文件和这写文件随着时间变化的变化。

 

然而Git并不这样做,

Git把数据当作一系列的快照来保存。

当你提交代码时,

对于改变了的文件,拍下一个快照作为记录,保存快照的引用,

如果文件文件没有改变,直接链接到之前已经存在的文件。

 

 

Git模型

工作区:当前项目的路径,里面是文件夹和文件

暂存区:相当于一个缓冲区,工作区和本地库之间的缓冲,防止误操作。暂存区里面就是要提交的文件夹和文件。

本地库:本地库是一个树,树的每一个节点就是一个提交点,一个提交点包含多个属性,有父提交点id,提交点的id,提交点的注释等和一个目录树,目录树就是要提交的文件夹和文件。

 

 

 

转载请注明:汪明鑫的个人博客 » 关于git的那些事儿

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz