文档章节

Git简介

明舞
 明舞
发布于 2015/04/27 10:43
字数 789
阅读 16
收藏 0
 

Git简介

 

一、本地版本控制系统

很久以前人们就开始考虑版本控制的问题,因为简单的通过复制整个项目目录的方式来保存不同的版本虽然操作简单,但是缺点显而易见。为解决此类问题,人们开发出本地版本控制系统,大多是采用简单的数据库方式来记录文件的历史更新差异,如图:


 

二、集中化的版本控制系统

很快人们遇到一个新的问题,即如何让不同系统下的开发者协同工作?于是,集中化的版本控制系统( Centralized Version Control Systems,简称CVCS )应运而生,诸如CVS、SVN等,它们的共同点是都有一个单一的管理服务器,保存整个项目的文件历史,而协同工作的开发者通过客户端连接到服务器,取出最新的文件或者提交自己的更新。

 

这么做最显而易见的缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。


 

三、分布式版本控制系统

分布式版本控制系统( Distributed Version Control System,简称DVCS )。在这类系统中,诸如Git,Mercurial,Bazaar 还有Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作的历史用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。


 

四、文件差异版本控制

CVS、SVN等系统进行版本控制的原理为每次都记录有哪些文件作了更新,其控制原理如图所示:


 

五、直接快照版本控制

Git并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一连接。


 

六、四个状态和三个区域

Git内部只有三个状态,分别是未修改unmodified、修改modified、暂存staged。对于没有加入Git控制的文件,可以视为第四种状态未跟踪untracked。

       Git文件流转有三个区域,分别是工作区域、索引区域、本地数据区域。工作树中的文件添加到git版本控制索引中,则git开始对文件进行跟踪监控。索引区域也可以理解为数据暂存区域,当提交操作时,暂存区域的数据被记录到本地数据仓库中。

本文转载自:http://blog.csdn.net/pandakong/article/details/7214258

共有 人打赏支持
明舞
粉丝 228
博文 424
码字总数 516555
作品 0
程序员
私信 提问
2016 年度码云热门项目排行榜 TOP 50

2016 年度码云热门项目排行榜 TOP 50 是通过开源项目2016年在码云上的 Watch、Star、Fork 数量来评定的榜单。码云平台发展至今,涌现了越来越多优秀的开源项目,越来越多的开源作者在上面分享...

oschina
2017/01/12
23.6K
53
码云周一见 | 老司机教你如何麻溜地搭建网站

类型:网站开发 Hello,大家好,小一又和大家见面了,今天小一想要跟大家聊聊网站开发的那些事儿。从近期业内动向来看,不少网站搭建团队开始向着高端网站建设、品牌网站建设、响应式网站建设...

达尔文
2016/12/26
7.3K
12
2017.11.28-学习笔记:简单的git命令

版本控制系统(version control system) git 分布式版本控制系统 1.git的三个区 1.工作区:我们书写代码的地方,工作的目录就叫做工作区 2.暂存区:使用 add 命令,在 .git 目录中的一个索引文...

演员小新
2017/11/28
0
0
史上最简单的 GitHub 教程

温馨提示:本系列博文已经同步到 GitHub,如有需要的话,欢迎大家到「github-tutorial」进行和操作! 1 简介   GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的...

qq_35246620
2017/03/27
0
0
git使用简介

2.1 概念 2.1.1 取得项目的 Git 仓库 有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。...

长平狐
2012/09/03
8.3K
4

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo分析之Cluster层

系列文章 Dubbo分析Serialize层 Dubbo分析之Transport层 Dubbo分析之Exchange 层 Dubbo分析之Protocol层 前言 紧接上文Dubbo分析之Protocol层,本文继续分析dubbo的cluster层,此层封装多个提...

ksfzhaohui
26分钟前
2
0
linux Ubuntu 安装 hyperledger fabric

一、apt-get update 二、安装docker sudo apt-get install docker.io 如果安装报错:E: Unable to locate package,请执行第一条。 # docker -v Docker version 1.6.2, build 7c8fca2 # dock......

八戒八戒八戒
29分钟前
2
0
神经网络基础及Keras入门

神经网络定义 人工神经网络,简称神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或...

Python女神
30分钟前
1
0
Pycharm上Django的使用 Day9

编辑条目: 1.创建edit_entry的URL模式 形参entry_id存储在URL中传递的ID,这个URL模式将预期匹配的请求发送给视图函数edit_entry() 2.编写视图函数edit_entry() 1处获取用户要修改的条目对象...

不会TC的猫
30分钟前
1
0
夹点getGripPoints/捕捉点getOsnapPoints

已知圆外一点,以及圆心半径,求圆的切点: 方法1: (b-y/a-x)*(n-y/m-x)=-1(a-x)平方+(b-y)平方=r平方联立方程组求解 方法1: CPoint CalcQieDian(CPoint ptCenter, CPoint ptOutside, do...

一个小妞
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部