Git分布式版本控制系统

1.简介

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

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

2.版本控制系统

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

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

3.本地版本控制系统

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


4.集中式版本控制系统

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


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

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

5.分布式版本控制系统

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


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

6.Git和SVN区别

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

7.伪中央服务器

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

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

8.参考

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容