版本控制

什么是版本控制? 
我需要版本控制吗? 
… 
如果你还没使用过版本控制系统,或许你会有以上疑问,甚至更多疑问。希望后面的回答能让你喜欢上版本控制系统,喜欢上Git。 
什么是版本控制:顾名思义,版本控制就是一管理我们文件版本的软件系统。同一份文件中会有不同的版本,编辑者会根据需求对新版本文件添加(修改、删除)内容等。

当你对文件修改一段时间后,你突然改变注意,想返回前面的版本中(或者是策划要求你这么做)。如果你没有保存以前的版本怎么办?是不是很蛋疼。也许你会想着每次修改都另存为一个新版本,如果是开发时间很长,你还会记得哪个版本修改了哪些内容?一大堆的XX1、XX2、XX3…看着一大推这样的文件名,你会整个人都懵了。

最典型的例子就是,也许你写毕业论文的时候就有过类似的经历,毕业论文1、毕业论文2…毕业论文最终版,毕业论文最终版1….知道论文提交哪天还继续修改。更糟糕的是,电脑硬盘坏了,我的天啊,要崩溃了,我要狗带…这样是不是很痛苦?

没错,版本控制系统就能帮你解决这些问题的烦恼。版本控制系统能帮你管理文件的(版本)修改。

集中式版本控制系统

如上图所示,有一个专门用于管理版本的服务器,保存所有的文件修订版本及相关信息记录,例如时间、提交者等。用户每一次对文件做了修改后,可以先Server提交新版本,方便管理。如果用户对想回到前面提交的某个版本,可以从Server回滚到想要的版本。这大大方便了用户的工作。 
不同的Client直接跟Server交互工作,提交、克隆等操作。不同Client之间是相互独立的。 
优点: 
1) 在一定程度上,同一个项目允许多人同时工作; 
2) 管理员方便管理权限。 
… 
缺点: 
1) 服务器发生故障后,项目组的协同工作无法进行,且项目的历史记录丢失; 
2) 为了保存修改的内容,client需要频繁跟server交互,如果不是局域网,交互速度严重受影响。 
…

分布式版本控制系统:

对于分布式版本控制系统,每个用户中都有自己在本地的仓库用来管理版本控制,每个客户端也同时是一个服务器。同时也可以用一个专门的服务器的仓库用来管理。 
分布式版本控制系统的不同用户之间,只要是在同一个局域网都是想通的,入上图所示。所以某一个用户协同工作的服务器发生故障,并不会影响到整个团队。 
与集中式版本控制系统相比: 
1) 分布式版本控制系统更安全,因为每个客户端都是一个服务器,拥有一个完整地版本库,包括所有的历史记录等; 
2) 工作效率会更高,因为对于小的修改,用户可以先把新版本的文件提交到本地的仓库,本地提交的速度远远快于“远程”提交; 
3) 如果是在同一个局域网,不同用户之间可以相互访问; 
4) 对于非局域网协同工作的,可以创建一个连接互联网的的服务器仓库。

Git的由来

Git的诞生跟Linux有很大的关系。这也就是为什么Git最开始主要是在Linux系统上使用。 
Linux的内核是一个开源的项目,有众多的高手参与其中的开发。这样对于提交补丁、保存归档等占了大多数时间。于是到了2002年,项目组开始启用了一个分布式的版本控制系统(BitKeeper)来维护、管理项目版本控制。 
可是由于某些原因,到2005年,BitKeeper同Linux开源社区的合作结束,意味着,Linux如果想继续使用BitKeeper,必须得付费。于是Linux开源社区决定开发自己的版本控制系统。于是就有了今天的Git。

小结

1) 解释版本控制系统 
2) 介绍集中式、分布式版本控制系统及特点 
3) Git的历史

下篇博客将写关于Git的安装

Git 简介的更多相关文章

  1. Git简介

    Git从入门到学会 Git简介 Git是什么? Git和SVN一样都是一种高效的管理代码的系统. Git是目前世界上最先进的分布式版本控制系统(没有之一). 创建版本库 什么是版本库呢?版本库又名仓库 ...

  2. git简介及使用方法

    一.git简介及安装1.git简介 Git 是用于 Linux 内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持, ...

  3. 一、Git简介

    由于工作需要,代码版本控制工具由SVN换为了Git.Git对于我来说,很陌生,不清楚其工作原理,所以查询了一些资料,将自己所得知的内容来汇总一下,梳理一下这方面的知识,同时也给其他想了解Git的童鞋们 ...

  4. 【学习总结】Git学习-参考廖雪峰老师教程一-Git简介

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  5. Git简介及安装

    1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...

  6. Git Step by Step – (1) Git 简介

    由于工作的需要,代码版本控制工具要从Perforce换成Git.说实话,刚开始真的很不适应,要从一个可以很好的支持用户界面的工具转到一个命令行工具,而且Git中有几百个命令,一下子就傻眼了. 但是经过 ...

  7. Git简介【转】

    本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git简介 Git是什 ...

  8. Git 简介与仓库使用

    1. Git 简介 2. 远程仓库的使用 3. 本地仓库的使用 1. Git 简介 Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上. 其原理是首先找一台电脑充当服务器的角色 ...

  9. Git - Git简介与客户端安装

    简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)! 集中式版本控制系统(CVS/SVN),版本库是集中存放在中央服务器的,而一般工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最 ...

随机推荐

  1. beaglebone black 固定IP上网(ubuntu16.04,console)

    今天把beaglebone black搞了下,让能通过网线上网.需要修改一些文件.刷的是ubuntu16.04系统,没有界面.不过资源占用很少,顺便说一下.系统下的vi不好用,没有安装vim. 下面的 ...

  2. C和指针 第十五章 输入输出缓冲

    对于C,所有的I/O操作都只是简单的从程序移进或移出字节,这种字节流便成为流(stream),我们需要关心的只是创建正确的输出字节数据,以及正确的输入读取数据,特定的I/O设备细节都是对程序隐藏的. ...

  3. Sicily 1151: 简单的马周游问题(DFS)

    这道题嘛,直接使用DFS搜索,然后莫名其妙地AC了.后来看了题解,说是move的顺序不同的话可能会导致超时,这时便需要剪枝,真是有趣.原来自己是误打误撞AC了,hhh.题解还有另一种解法是先把一条完整 ...

  4. grep 命令

    简单介绍:grep命令是用于分析一行信息,若当中有我们所需要的信息,就将该行取出来. 语法结构:grep [-acinv] [--color=auto] '查找关键字' #{filename} -a: ...

  5. iOS sqlite数据库图像化查看

    问题描述:在xocde上用sqlite数据库的时候,因为没有图形化界面,有些时候很难看出自己设计的数据库是否有问题,比如我刚上手sqlite数据库设计id为自增长时,很自然的用了identify(1, ...

  6. 在CentOS下搭建自己的Git服务器

    首先需要装好CentOS系统,作为测试,你可以选择装在虚拟机上,这样比较方便.这步默认你会,就不讲了.有了CentOS,那么如何搭建Git服务器呢?1.首先需要安装Git,可以使用yum源在线安装: ...

  7. signalR selfhost 版本兼容问题

    一.异常简要说明 最近在学习signalR,i按照http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host 这 ...

  8. 触发bfd 的条件

    满足下列条件之一就可触发BFC [1]根元素,即HTML元素 [2]float的值不为none [3]overflow的值不为visible [4]display的值为inline-block.tab ...

  9. typeScence

  10. 在一个aspx或ashx页面里进行多次ajax调用

    在用ajax开发asp.net程序里.利用ashx页面与前台页面进行数据交互.但是每个ajax交互都需要一个ashx页面.结果是项目里一大堆ashx页面.使项目难以管理.现在我们就想办法让一个ashx ...