Git分布式版本控制系统

1.简介

Git是一个开源的分布式版本控制系统,
是目前世界上最快、最简单、也是最流行的版本控制工具,
它可以有效、高速的管理从很小到非常大的项目版本。
Git是Linus Torvalds为了帮助管理Linux内核源码,
而开发的一款开源的免费的版本控制工具。

Git主要用途:
1.保存每一次修改,便于追踪查看项目中所有文件的变化;
2.同时使用多种方式实现一个任务(并行分支),然后挑选最好的实现留下;
3.方便多人协作开发同一个项目,保持项目的一致。

2.版本控制系统

版本控制系统是一种记录一个或多个文件内容变化,
以便将来查阅特定版本修订情况的系统。
该系统通常用于管理软件源代码文件的版本,
实际上对任何类型的文件都能进行版本控制。

如果你是位作家或设计师,
可能会需要保存某个文件的所有修订版本,
通常情况下需要手动备份这些文件。
采用版本控制系统(VCS)管理所有文件版本,
可以回溯文件之前的所有状态,
甚至整个项目回退到某个历史状态。
这样就可以随心所欲的进行创作,
而不用担心修改之前的文件丢失问题。
你可以比较文件两个版本之间的变化,
查看项目中其他人的修改记录,
即使有人误改误删项目中的文件,
也可以轻松恢复到原样。

3.本地版本控制系统

通常大家会复制整个目录来备份项目和文件,
或许还会改名加上备份时间以示区别。
不过有时候会混淆所在的工作目录,
一旦弄错文件丢了数据就没法撤销恢复。
为了解决这个问题,
人们开发了许多种本地版本控制系统,
大多都是采用某种简单的数据库来记录文件的历次更新差异。


11810589-f971406863b41f6c.png

4.集中式版本控制系统

接下来人们又遇到一个问题,
如何让在不同电脑上的开发者协同工作?
于是集中化的版本控制系统应运而生。
这类系统有CVS,SVN等,
它们有一个集中管理的服务器,
保存所有文件的修订版本,
而协同工作的人们通过客户端连接服务器,
取出最新的文件或者提交文件。


11810589-2b08d939a2ef53b3.png

相较于本地版本控制系统,
每个人都可以看到项目中的其他人正在做些什么。
管理员也可以轻松掌控每个开发者的权限,
并且管理一个集中系统远比维护各个终端本地数据库容易。

缺点是中央服务器的单点故障,
如果服务器宕机,那么在这段时间内,
谁都无法提交更新,也就无法协同工作。
要是中央服务器的磁盘发生故障,
而没有备份,就会有丢失数据的风险。
同样本地版本控制系统也存在类似问题。
集中式版本控制系统最大问题就是必须联网,
而且对带宽和网速要求很高,
如果在局域网内还好,带宽和速度通常是够的,
否则既不能提交也不能回滚,
更不能查看文件的历史记录,
对于使用者的工作效率是个巨大的打击。

5.分布式版本控制系统

于是分布式版本控制系统面世了。
这类系统有Git,Mercurial等,
客户端并不只提取最新版本的文件快照,
而是把代码仓库完整地镜像下来。
这么即使任何一处协同工作用的服务器发生故障,
事后都可以用任何一个客户端镜像出来的本地仓库恢复。
因为每一次的提取操作,
实际上都是一次对代码仓库的完整克隆,
通过这种机制实现了分布式去中心化。


11810589-6cfc3301a1d83529.png

这类系统可以指定和多个不同的远端代码仓库进行交互。
你可以在同一个项目中,分别和不同工作小组的人相互协作。
你可以根据需要设定不同的协作流程,比如层次模型式的工作流,
而这在以前的集中式系统中是无法实现的。

6.Git和SVN区别

我们使用比较多的集中式版本控制系统是SVN,
经常会拿来和分布式版本控制系统Git进行比较,
Git本地仓库包含代码库还有历史库,
在本地的环境开发就可以记录历史,
而SVN的历史库存在于中央仓库,
每次对比与提交代码都必须连接到中央仓库才能进行。
使用SVN必须联网,否则只能罢工,
而Git只在和他人同步代码时需要联网,
由于Git本地记录和分支的关系,
合并同步代码的工作也非常方便。
当然Git的优势不单是不必联网这么简单,
还有Git极其强大的分支管理,
在Git中创建一个分支或者标签是非常简单的,
但是SVN创建一个分支就必须复制整个目录,
这就把SVN等远远抛在了后面。
另外SVN必须有一个"中央服务器",
而Git每一个客户端都可以作为服务器,
通常我们会约定一个"伪中央服务器"同步代码。

7.伪中央服务器

分布式版本控制系统根本没有"中央服务器",
每个人的电脑上都是一个完整的版本库,
那么多人开发如何协作呢?
比如你在自己电脑上改了文件A,
你的同事也在他的电脑上也改了文件A,
这时你们俩之间只需把各自的修改推送给对方,
就可以互相看到对方的修改了。

在实际使用分布式版本控制系统的时候,
很少在两人之间的电脑上推送版本库的修改,
因为可能你们俩不在一个局域网内,
两台电脑互相访问不了,
也可能今天你的同事请假了,
他的电脑压根没有开机。
因此分布式版本控制系统通常有一台"伪中央服务器",
但这个服务器的作用仅仅是用来方便"交换"大家的修改,
没有它大家也一样干活,
换一台服务器作为"伪中央服务器"也很方便。

8.参考

Git官方教程中文版(支持多语言)
Git教程_廖雪峰的官方网站

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值