Git 简介
版本控制
什么是版本控制?
我需要版本控制吗?
…
如果你还没使用过版本控制系统,或许你会有以上疑问,甚至更多疑问。希望后面的回答能让你喜欢上版本控制系统,喜欢上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 简介的更多相关文章
- Git简介
Git从入门到学会 Git简介 Git是什么? Git和SVN一样都是一种高效的管理代码的系统. Git是目前世界上最先进的分布式版本控制系统(没有之一). 创建版本库 什么是版本库呢?版本库又名仓库 ...
- git简介及使用方法
一.git简介及安装1.git简介 Git 是用于 Linux 内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持, ...
- 一、Git简介
由于工作需要,代码版本控制工具由SVN换为了Git.Git对于我来说,很陌生,不清楚其工作原理,所以查询了一些资料,将自己所得知的内容来汇总一下,梳理一下这方面的知识,同时也给其他想了解Git的童鞋们 ...
- 【学习总结】Git学习-参考廖雪峰老师教程一-Git简介
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- Git简介及安装
1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...
- Git Step by Step – (1) Git 简介
由于工作的需要,代码版本控制工具要从Perforce换成Git.说实话,刚开始真的很不适应,要从一个可以很好的支持用户界面的工具转到一个命令行工具,而且Git中有几百个命令,一下子就傻眼了. 但是经过 ...
- Git简介【转】
本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git简介 Git是什 ...
- Git 简介与仓库使用
1. Git 简介 2. 远程仓库的使用 3. 本地仓库的使用 1. Git 简介 Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上. 其原理是首先找一台电脑充当服务器的角色 ...
- Git - Git简介与客户端安装
简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)! 集中式版本控制系统(CVS/SVN),版本库是集中存放在中央服务器的,而一般工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最 ...
随机推荐
- Swift3.0P1 语法指南——继承
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- Adaboost\GBDT\GBRT\组合算法
Adaboost\GBDT\GBRT\组合算法(龙心尘老师上课笔记) 一.Bagging (并行bootstrap)& Boosting(串行) 随机森林实际上是bagging的思路,而GBD ...
- java实现快速排序
package com.wangjj.quicksort; import java.util.Arrays; /** * 快速排序 * @author Administrator * */ publi ...
- jQuery stop()用法
jQuery stop()的用法: stop(true)等价于stop(true,false): 停止被选元素的所有加入队列的动画. stop(true,true):停止被选元素的所有加入队列的动画, ...
- Android中矢量动画
Android中矢量动画 Android中用<path> 标签来创建SVG,就好比控制着一支画笔,从一点到一点,动一条线. <path> 标签 支持一下属性 M = (Mx, ...
- 耿丹CS16-2班第二次作业汇总
-- Deadline: 2016-09-28 12:00 -- 作业内容:http://www.cnblogs.com/huangjunlian/p/5891726.html -- 第二次作业总结: ...
- bzoj4691: Let There Be Light
如果原点能被一个光源照到,那么这两个点之间一定没有任何球.我们可以通过三分距离来确定某线段和球是否有交点. 注意到m非常小,于是我们可以枚举原点被哪些光源照到.由于\(O(2^{n}*m)\)会超时, ...
- SQLite.Net-PCLUSING SQLITE IN WINDOWS 10 UNIVERSAL APPS
USING SQLITE IN WINDOWS 10 UNIVERSAL APPS 1.下载SQLite VSIX package并安装 http://sqlite.org/download.html ...
- maven学习(下)利用Profile构建不同环境的部署包
接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre) ...
- Js/Jquery获取iframe中的元素
转载: Js/Jquery获取iframe中的元素 - - ITeye技术网站http://java-my-life.iteye.com/blog/1275205 在web开发中,经常会用到ifram ...